❶ C語言多級指針問題
int *t=&k;後t指向k,即t的值是k的地址;
s=&t,後s指向t,而*s=&m;的作用是改變s指向的變數t的值,使t的值等於m的地址,即*s=&m;後t指向m
,所以*t的值是m的值5。
❷ c語言多級指針 dev c++ 編譯錯誤
#include<stdio.h>
intmain(void)
{
inti=10;
int*p=&i;//你這里的這個P大寫了,兄弟
int**q=&p;
int***r=&q;
return0;
}
❸ C語言 多級指針 指針變數賦地址值的方式
**p就是一個雙重指針啊,意思就是說這個指針變數裡面放的是一個指針的地址(一般的指針變數裡面放的是一個變數的地址),這么說不知道你明不明白。
通過指針變數獲得地址值:
int
**p;//雙重指針
int
*q;//普通指針
p=&q;//將指針q的地址賦值給p
通過標准函數獲得地址值:
int
**p;
p=(int*)malloc(n*sizeof(int*));//動態創建n個int類型的指針變數空間
其實說白了雙重指針就是二維數組的頭指針,數組的每一行的開頭就是那一行所代表的一維數組的指針,二維數組頭指針就是每一行的頭指針的地址數組。
哇
我自己都覺得指針這個東西好繞。。。。不過多用就明白了。
❹ c語言多級指針問題static int a[][3]={{1,2,3},{4,9},{7}};
(總感覺你抄錯題了)
由a的定義知道a是3行,3列數組。
1 2 3
4 9 0
7 0 0
while循環,總共執行了3次,在循環體內i的值是1,2,3
因為p是一個指針數組,其中的三個元素分別指向了a的三行。
所以p[i][j]其實就是a的第i行第j列
*(*(p+i)+i) 表示的就是 a[i][i]
*(*p+i) 表示的是a[i][0]
所以三次循環執行的是:
a[1][1] = a[1][0] + 3 = 7;
a[2][2] = a[2][0] +3 = 10;
a[3][3]其實是不合法的地址
printf *p[0]其實是a[0][0] 也就是 1
printf *(*(p+1)) 是a[1][0]也就是4
❺ delphi中多級指針與偏移,應該怎麼寫程序
1、指針一般在直接操作內存、調用外部dll、調用API時用到。想要替代?-_-!!
2、指針就是指向數據的一個地址,當然要給它分配內存來放它,計算機裡面沒有不給分配內存而使用的東東。
3、是的,p就是一個指針。p := '窗口新標題';的意思是把p指向'窗口新標題'這個數據的地址,比如#12345678,計算機在引用它的時候就直接找這個地址來取值就行了。如果你定義的是var p string; p := '窗口新標題'的話,計算機在執行的時候會首先找p這個變數的地址,然後在找這個變數保存的值的地址,這樣會有多次掃描內存的過程,造成一些不必要的浪費。
❻ c語言多級指針 dev c++ 編譯錯誤
改成 int* pArr = (int*)malloc(4 * len);//定義了一個動態數組
11行寫成scanf。你寫成了scnaf