而今天的主角——指標,則是用於儲存位址,它在c語言使用中和陣列名是緊密的聯絡在一起。
#include int main()
,,};
for(int i=0; i<3; i++)
putchar(10);
}//研究陣列名a的大小
printf("a = %p\n",a);
printf("a + 0 = %p\n",a+0);
printf("a + 1 = %p\t",a+1);
printf("a + 2 = %p\n",a+2);
//研究陣列a的每個元素的大小
printf("a[0] = %p\n",a[0]);
printf("a[1] = %p\t\t",a[1]);
printf("a[1] + 1 = %p\t",a[1]+1);
//研究二維陣列到一維陣列的關係化
printf("*(a+1)+1) = %d\t",*(a+1)+1));
printf("*(*(a+1) + 1) = %d\n",*(*(a+1)+1));
printf("&a[1] +1 = %p\n",&a[1]+1);
return 0;
}
從程式中我們可以總結出:
a //表示是陣列下標為0的那一行的首位址
a+1 //表示是陣列下標1的那一行的首位址[<=>&a[1] ]
a[1] //<=>a[1]+0,也是a[1][0]元素的位址
a[1]+1 //指的也是a[1][1]元素的位址
*(a+1)+1 //指的也是a[1][1]元素的位址
((a+1)+1) //指的是元素a[1][1]值
*( a[1]+1) //指的是元素a[1][1]值
【c】實參是陣列指標,形參是陣列指標
主調函式:
int a[40];
int *p=a;
function(p);
被調函式:
function(int *q)
【d】實參是陣列指標,形參是陣列
主調函式:
int a[40];
int *p=a;
function(p);
被調函式:
function(int a)
C語言的指標(基礎篇章)
記憶體是以位元組為單位進行編址的,記憶體中的每個位元組都對應乙個位址,通過位址才能找到每個位元組。而我們常說的變數,變數的記憶體位址就是變數的指標。切記,指標是有型別位址常量。記憶體的快捷方式 指標定義指標變數的一般形式 type variable 指向資料型別 指標變數名 指標運算的本質是指標中儲...
c語言指標高階(二)
首先這裡強調乙個問題就是假設我現在知道乙個記憶體位址0xaa11 我怎樣將這個位址直接給乙個指標呢?首先這樣是沒有語法錯誤的 確實也是這樣定義的 但是位址我們是不能隨便規定的 這個主要用於程式開發中我們向特定的位址 我們已知的位址 去寫入資料 例如 通過i2c介面傳送到mcu乙個位址資料 unsig...
c語言指標之二級指標示例
二級指標的概念 首先任何值都有位址,一級指標的值雖然是位址,但這個位址做為乙個值亦需要空間來存放,是空間就具有位址,這就是存放位址這一值的空間所具有的位址,二級指標就是為了獲取這個位址,一級指標所關聯的是其值 乙個位址 名下空間裡的資料,這個資料可以是任意型別並做任意用途,但二級指標所關聯的資料只有...