1樓:匿名使用者
因為陣列從實現上來看其實就是指標啊。
#include
int main(void) ; //十個數int *p_array_a;
p_array_a = array_a; //注意我這裡沒用取址符的起始地址
printf("p_array_a : %p \n",p_array_a); //p_array_a指向的地址
int i;
for(i = 0; i < 10; i++)printf("\n");
for(i = 0; i < 10; i++)return 0;
}你可以自己試試。
2樓:匿名使用者
是等價的
指標的意思是,指向一塊記憶體的首地址
有了首地址,就可以訪問這塊記憶體中的第一個元素
把指標加上一個數字,就會得到一個新的指標,就可以訪問這塊記憶體中的後面的元素
陣列的意思是,一塊記憶體
但c語言有沒法同時對一整塊記憶體中所有元素訪問,還是得一個一個元素單獨訪問
而要訪問單獨元素,還是要通過單獨的地址,那麼最自然的方式還是通過首地址加上陣列索引來訪問
所以指標和陣列,意義上一個是地址,一個是記憶體,但是用起來沒有什麼兩樣,而實際上它們就是同一個東西的兩種不同寫法,它們編譯成機器指令後就完全分不清原來是怎麼寫的了
c語言書上說a(i)和*(a+i)等價,我覺得不對啊
3樓:金色潛鳥
注意方括號和小括號。一維二維不要混淆。
c語言 語句中,方括號 不是標點符號,而是 運算子.
c語言 語句中,有恆等式: a[i] = *(a+i)a[i][j] 等於 (a[i])[j] 套恆等式公式,化成 ( *(a+i) )[j], 再化成 * (*(a+i) + j);
類似地 a[j][i] 等於 (a[j])[i],套恆等式公式,化成 ( *(a+j) )[i] ,再化成 * (*(a+j) + i);
求地址 用 & 運算:
1 維:& (a[i]) = & ( *(a+i) ); 注意 &* 抵消, 得 &a[i] = (a+i )
2維; &(a[i][j]) = (*(a+i) + j);
2維; &(a[j][i]) = (*(a+j) + i);
******************************=2 維:
a(i)等價於&a(i)(0) --- 不是小括號,是方括號,用於2 維 下標變數時的 a[i] 等價於 &a[i][0]a[i] 是第 i 行 的 首地址,等價於 &a[i][0]
4樓:運命に抗
書上是對的,你的理解完全錯了。
a[i]並不等價於&a[i][0]。
&a[0]等價於a;
&a[i]等價於a+i
同時取值
*(&a[i])等價於*(a+1);
其中*(&a[i])的*&抵消就是你書上說的 a[i]等價於*(a+1);
為什麼.一個陣列元素a[i]與a+i的表示等價?謝謝啦
5樓:覺悟壯志
不等價吧
*(a+i)與a[i]等價
因為可以理解陣列是特殊的地址常量
a代表a[0]的地址
a+1就是地址+1
是a[1]……
6樓:儲熠祖波
a是儲存的是陣列首地址,*a指向的就是陣列第一個元素a[0],所以*(a+i)的地址和a[i]的地址一樣。陣列和指標在一定程度上本質是一樣的。
7樓:匿名使用者
a表示的陣列首地址,指標和陣列在一定程度上是一樣的。所以a[i]和*(a+i)指向的元素是一樣的。
a[i]表示給定了陣列首地址的儲存位置a 尋找陣列中的第i+1個元素(陣列第一個元素是a[0]),而*(a+i)就直接讓指標指向陣列第i+1個元素。
8樓:靜文風
因為a即代表a[0]是陣列的首地址,所以a[i]等價於a[0]+i,即a+i
c語言中*(a+i)與a[i]是等價的。那麼*(a+i)是值還是地址?
9樓:匿名使用者
*(a+i)就是值了
*(*(a+i)+j)才和a[i][j]等價
c語言中unsigned和signed在宣告時有什麼作用
1 unsigned的作用就是將數字型別無符號化,例如 int 型的範圍 2 31 2 31 1,而unsigned int的範圍 0 2 32。看起來unsigned 是個不錯的型別,尤其是用在自增或者沒有負數的情況。但是在實際使用中會出現一些意外的情況。2 signed在預設情況下宣告的整型變數...
在C語言中,「原碼,反碼和補碼」有什麼不同啊
正數的原碼,反碼和補碼都一樣的,而負數就不一樣了 計算機為了讓所有的數都是進行同一個加法運算,就有了原碼,反碼和補碼的產生 負數的補碼等於它的絕對值的原碼取反後得到這個負數的反碼,而在反碼的基礎上加1就變成了這個負數的補碼了 下面我用8位的來舉例 最高位是符號位 45原碼 00101101 反碼 0...
在c語言中p,d和x的區別p是以16進位制的
p用來輸出指標 x用來輸入int 型別。二者都是16進位制值輸出 如果版是32位系統 那麼沒區別 如果是64位系統 那麼 p會輸出8位元組權資料。而 x只能輸出4位元組資料。也就是說 32位系統 p等效於 x 64位系統 p等效於 lx 在c語言中 p d和 x 的區別 p 是以16進位制的形式輸 ...