關於c語言指標的問題,乙個關於c語言指標的問題

時間 2021-05-04 18:26:43

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 按十六進製制輸出 你把 與 兩個的功能搞錯了 乙個是取位址 乙個是指向 但不取。注意變數名區分大小寫,菜鳥。我沒看出來有什麼不對的...