C語言指標問題

時間 2022-07-15 13:10:03

1樓:匿名使用者

提問:你確定(*p)[3]能取到資料嗎, 假如 p = a; 直接(*p)[3取值會報錯吧?

分析:陣列名有地址屬性, 若定義陣列a[3][3], 那麼a的含義包括:1從變數角度是陣列型別的變數, 指 a[0][0]到a[2][2]這一整段記憶體空間, 2,從地址屬性它等於&a[0][0],也就是a[0][0]的地址。

當給p賦值為a(即:p = a)的時候,指標變數p裡面儲存的就是a[0][0]的地址,那麼 *p 取到的將會是 a[0][0]的值, 也就是1, 是a[0][0]對應的型別(int), 那麼 (*p)[3], 直接回報錯的!

測試**附上:

int main(); int *p = null; p = a; printf("%p \n", a); //%p 輸出對應變數的地址

// 以上三行將輸出同一個地址

// printf("%p", (*p)[3]); // 這一行會報錯 return 0;}

2樓:匿名使用者

(*p)[3]是行指標,不是什麼指向含有三個元素物件的指標,應該 是 *(*(p+i)+j) 這麼用 i是行 j代表列,,,比如你要輸出5 那麼就應該是*(*(p+1)+1);**p是指向指標的指標

3樓:塵小兀

把a的首地址賦給p,所以*p是a的首地址,只有*(*p)即*(a的首地址)才是a[0][0]的值。希望對你有幫助

關於C語言指標問題,C語言指標的賦值問題

飛翔的蠍子大叔 關於int p1 123這個問題我看了很多資料,在這裡我發表一點看法,該問題非常好,這是c語言需要規範的地方。int p1 123 是非法操作,指標表示地址,地址 123?我是沒有見過這種操作。地址一般用二進位制 八進位制 十六進位制表示,123表示地址根本就是扯淡!這個語句的目的就...

C語言指標問題

你的肯定不能執行a定義的不對啊!c語言裡規定一定要有界限 裡面一定要有值只有當a為形參時才合法!像你這種情況一定要用連結串列才能實現 要求對記憶體用多少拿多少 樓上的你的程式的思想很好!但是除錯時候有點小問題 倒數第5個字母怎麼沒顯示啊?改了一下可以了!include stdio.h include...

c語言指標的問題,一個c語言指標的問題

劉文正粉絲 首先說一下,你這不是c語言,是c 問題一 這個就是問題二的內容了.p指向的是a,而p是一個地址.c語言輸出一個字串不是靠一個實際的資料輸出的,而是靠著實際資料的首地址輸出的.問題二 char ch aadsf 你要知道,一個字串的值是這個臨時值的首地址,也就是a的地址.而你又把這個地址給...