請教C語言指標問題

時間 2022-07-25 13:25:06

1樓:匿名使用者

首先是陣列的概念,很多人對c語言的陣列的概念理解並不到位,有時間可以找打相關的資料看一看,像a這樣的一維整形陣列可以隱式轉換為 int*, 所以你後面的 **b = a; 這句**是錯誤的。

很多人對指標的理解也是不太正確的,其實指標的意思並不複雜,指標儲存的是地址物件,同時它還需要攜帶一個資訊就是該地址物件儲存的內容的型別。所以 int **b; 中的 b一個地址物件,而該地址儲存的內容是int*, 即一個整形的地址資訊。所以後面的**只能這樣寫 *b = a; 意思是什麼通過前面的描述你應該清楚了。

然後++b的意思就比較難於解釋了……

我們假設如下吧:

int a = ;假設資料a的首地址為0x000000ff;那麼該陣列的長度就是5*4bytes=20bytes了。(這裡假設int型佔用4個位元組)

而int **b; 假設b的地址為 0x 0000ff00,而該地址的儲存的資料的持續長度為4bytes;(32位環境)

*b = a; 會把 0x000000ff這個地址值賦值給以地址0x0000ff00開始的4bytes的空間裡,這裡我們假設機器為32位的,所以記憶體地址為32位。

++b 就是把儲存在地址0x0000ff00這個地址的指標內容加1個單位,因為b為指標型別,所以這1個單位是4bytes,所以在該地址儲存的內容變為 0x000000ff+0x4 = 0x00000103;

我相信這樣解釋應該很清楚了?

2樓:匿名使用者

**b是個二級指標,

a是一維陣列,

這樣不能賦值,要進行指標轉換的

3樓:匿名使用者

樓主是不是想知道s和a的值為什麼會一樣,而不是隨機的值吧。s和a都是在還有,一般列印指標值用的格式控制串是%p。 在c語言裡,((char *)*

4樓:風韻紅脣

int (**b)=a

HELP!請教C語言高手 指標問題

雨曄 null使系統的一個空地址 是不能給他進行賦值的 int i null 這樣定義 是為了防止沒有對指標i進行初始化 就使用會有可能導致系統崩潰的 因為定義指標int i,k 如果沒有對它進行初始化i k 就進行賦值 i 12 那麼編譯的時候是不會提示出錯的 頂多有個警告 但很多菜鳥會認為警告不...

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

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

C語言指標問題

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