C語言指標中a 3和 a 3 的區別

時間 2021-05-07 20:00:40

1樓:有種孤獨叫寂寞

*是取指標值,*a+3是取a這個地中存的值再加3。

*(a+3)是把a+3這個地址的值取出來。

如a[4]=

*a+3=a[0]+3=4,*a是取a的首地址值,就等於a[0]*(a+3)=a[0+3]=a[3]=8

2樓:赤膊蘋果

如果 int *a 指向地址0x1234, 該地址存放的內容是:11,而0x1240地址上存放的內容是:22

那麼:*a+3 ==> 11+3 = 14

*(a+3) ==> (0x1234+c) ==> 22

3樓:文大寬

這樣給你說吧,如果你的a是一個int型陣列,那麼*a就值a[0]的值,*a+3=a[0]+3;而*(a+3)=a[3];

4樓:小木凌風

這是操作符優先順序的問題

*a+3,*的優先順序比+高,所以這個表示式指標a指向的變數再+3;

*(a+3),()的優先順序比*高,所以先計算裡面的,也就是指標a指向的地址+3,值為地址,然後再算外面的*,提出變數,最後整個值就是a指標後面三個地址的變數的值,也就是a[3]

5樓:青春無情

問的是二維陣列吧a!

*a+3 :*a為指向第一行第一列,+3,表示列加三

*(a+3) : a表示指向第一行, +3表示行加三

c語言指標 定義 int *a[3] 和 int *(a)[3] 有什麼區別??? 書上的沒看懂啊

6樓:匿名使用者

int *a[3];

//因為bai:du陣列zhi名等效於dao指標,內//因此:int *(* (a+3)) 該型別為指標,即:該陣列的元素為容指標變數

int *(a)[3];

//因為:陣列名等效於指標,比()、*操作符都要高階。

//因此:int * ( *(a+3 ) == int **(a+3) 該型別也為指標,即:該陣列的元素為指標變數

7樓:匿名使用者

int *a[3] 和 int *(a)[3]沒有區別,這個括號是多餘的。

如果你問的是int *a[3] 和 int (*a)[3]的區別,則:專

(1)int *a[3] 中 a是陣列,陣列中每個屬元素是個int型別的指標;

(2)int (*a)[3]中 a是指標,這個指標指向一個長度是3的int型別陣列。

其實,這類問題關鍵就是如何理解(),這裡()就是優先操作,先操作(*a),是個指標,後面就是int [3],是個陣列。

8樓:匿名使用者

因為 [ ]的優先順序 會比 *號高;所以 int *a[3]; a先與[3]結合 代表一個陣列;其次再與int * 結合;

其他的同wxhysoft

9樓:飄秋楓嵐

int *a[3]叫指標陣列,int *(a)[3]叫指向陣列的指標,名字都不一樣,用法也不內一樣。

int *a[3]一般用來存放一系列的字容符串。

如 int *a[3]=;

int *(a)[3]則基本等同於int a[3],用於在函式中做形式引數,接受傳來的資料。如

呼叫fan(a[4][3]);

函式int fan(int *(a)[3])

c語言問題,陣列與指標,C語言陣列和指標的問題

char a computer a指向一個常量字串,常量字串是不能修改的,而你的for迴圈內要修改a指向的這個常量字串,自然要出錯 char a computer 這個a就是個普通陣列了,它的內容是可以改動的,就不會出錯了 因為 a是個指標啊 所以應該賦值賦地址!所以 應該 char a compu...

怎麼理解C語言指標中a b,c語言中,指標問題! a b和a b,有什麼不同?a是指標

豬頭或火寶寶 你好!首先我們已經知道 a,b,都是指標變數,a表示指標變數所指向的值,同樣 b也是如此。a b就是表示把指標b所指向的值賦值給指標變數a所指向的值。但是要是指標a要是沒有初始化或是開闢空間的話,這樣賦值就有危險!例如 int a int b 5 a b 首先宣告一個指標變數a,但是系...

關於c語言的指向指標的指標和指標

這個問題很好啊,其實如果你用printf列印p1和p的話,你會發現這兩個值是相等的,因為他們都是指標,c語言是不區分指標之間的差別的,一切指標都是指標,不管他指向什麼,但是當前面加上 號後,他們就有了區別,p1很顯然是一個char型別,而 p這是一個char 型別。printf會把p1指向地址中的值...