1樓:匿名使用者
二維陣列相當於乙個一維陣列裡面的元素都是一維陣列;二維陣列名也相當於乙個二級指標。一維陣列:*a=a[0]; 二維陣列:
**a=*a[0]=a[0][0];通俗點寫就是a=&a[0], a[0]=&a[0][0],因為&a[0]==&a[0][0] ,所以a於*a指向同乙個位址&a[0][0],則**a==a[0][0]
2樓:匿名使用者
#include
int main(void)
;printf(" %p \n %p \n %p \n", a+0, *(a+0), *(*(a+0)));
printf(" %p \n %p \n %p \n", a, *(a), *(*(a)));
printf("+++++++++++++++\n");
printf(" a[0][0] %p \n", a[0][0]);
return 0;
}a是二維陣列的名字,存放的就是第乙個數字的首位址。二維陣列名字的使用
參見
關於c語言中指標的乙個問題
3樓:匿名使用者
一、int const *a
const修飾的是「*」,也就是說,指標指向的目標是常量,但是a不是常量
比如int const * a;
int b =10, c = 23;
a = &b;
*a = 7;這個就不合法了,不能通過該指標修改指標指向的目標但是a = &c; 這個合法,因為a不是常量,可以改變所指向的目標二、int const *const a
前面的const 修飾的是「*」,規則同上後面的const修飾的是a,此時a是常量,因此a在宣告的時候就要初始化了,例如:
int b = 1, c = 8;
int const * const *a = &b;
a = &c; 這個不合法,因為a是常量*a = 77;這個也不合法,因為指標指向的目標也不可改變
關於c語言的指標問題(指標的位址+1問題) 10
4樓:小p精神
我來給你寫個例子,你參考一下
int *p, *q,*s;
int a[3] = ;
p = a; //將a的首位址賦值給p 那麼p指向的值應該是a[0]的值2
printf("a[0] = %d; *p = %d \n", a[0], *p);
q = &a[0] + 1; //將a[0]的位址向右偏移一位就等於a[1]的位址 a[1] = 8那麼*q應該等於8
s = q + 1; //將q指標向右偏移一位,相當於把a[1]的位址向右偏移一位,即a[2]的位址指向的值是25
//列印驗證一下
printf("a[0] = %d; *q = %d ;a[1] = %d *s = %d\n", a[0], *q,a[1],*s);
5樓:
輸出的四行**分別是:
a的值,
a的位址+1的位址值(並非a的位址,因為你的p值已經+1了),*p表示的是p指向位址的內容值;
*q表示a的位址+17位址上內容的值.
a的位址+1的值,是指向下乙個位址,偏移量為a的型別長度
問關於c語言指標的問題,問一個關於C語言指標的問題
常玉標 cannot convert from const int to double 編譯器 會出現這樣的錯誤.應為不能把const int 賦值給 double 型別的變數.希望你能懂 首先我鄙視下樓上的回答,答非所問。你這肯定錯誤的啊,首先 double p 是定義了一個指標變數p,p只能存放...
提問關於C語言的問題,提問乙個關於C語言的問題
中間的符號是定義兩個數之間的分隔符。沒有字元時預設分隔符為空格,回車或製表符。所以如果沒有逗號,輸入7879他只當做乙個數,輸入給a,並等待你輸入第二個數。即便沒有逗號你輸入78也是只當做乙個數,輸入給a,而等待你輸第二個數。即 數字中間必須有分隔符。另外 語法應該是 scanf d d a,b 中...
C語言指標位址輸出問題,關於C語言指標位址輸出問題
能夠輸出位址值!include main 這個程式就可以 注意變數名,前後要一致,不要用大寫!請將 p改為 p 將最後一行改為 printf x b 你會看得更真切!x 按十六進製制輸出 你把 與 兩個的功能搞錯了 乙個是取位址 乙個是指向 但不取。注意變數名區分大小寫,菜鳥。我沒看出來有什麼不對的...