一、指標陣列和陣列指標的區別
指標陣列:是乙個陣列,但是陣列裡儲存的資料型別是指標;
陣列指標:是乙個指標,但是指標的型別是指向乙個陣列;
int *array[4];//定義了乙個有4個int*資料型別的陣列
int (*p)[4]; //定義了乙個具有4個int資料型別的陣列的指標;
初始化:
int *array[4]=;
int ab[4]=;
int (*p)[4]=ab;
注意:優先順序:()>>*
二、指標陣列和陣列的區別
char *array1[4]=;
char array2[4][10]=;
區別:1、array1裡面的字串儲存在rom區;array2一般儲存在ram區;因此array1裡的字串內容不能改變;
2、array1陣列裡面存的是字串首位址,因此共占用ram=4*4;array2陣列整個放到ram區,占用大小為ram=4*10;
三、指標和二維陣列
int array[3][2]=;
array表示整個陣列首位址,即array[0]的位址,即array[0][0]的位址;他們值是相同的;
*array表示第一行,第乙個元素位址,即array[0]的位址,即array[0][0]的位址;他們值是相同的;
*(array+1)和*array+1區別:
*(array+1)表示第二行,第乙個元素位址;*array+1表示第一行,第二個元素位址;
四、陣列名和指標區別
char array=;
char *p=array;
array是乙個指標常量,不能夠自身++和--;
p是乙個指標變數,可以進行自身++和--運算;
注:要想得到陣列大小,sizeof只能傳遞array,不能傳遞p;
c語言指標學習筆記
example 1 int a,b,p,q p a p a p q b p p a 錯誤,因為p實際上是乙個位址,而a是乙個整型值 p q 錯誤,因為這句話的意思是 將位址q指向的單元的值賦給位址p。而實際上p是乙個位址,是不能存值得 p a 錯誤 注意,如果這樣定義了 p,那麼 p表示位址 指標 ...
C 語言指標學習筆記
前敘 原先對c語言的學習,對指標有恐懼感.當c語言學到一定的程度的時候,再學習指標有種水到渠成的感覺。對指標變數的定義包括三個內容 1 指標型別說明,即定義變數為乙個指標變數 2 指標變數名 3 變數值 指標 所指向的變數的資料型別 一般是這樣的 型別說明符 變數名 int p 這個小星星號 表示這...
C語言指標學習筆記
假設我們定義乙個指標p。那麼會經常使用到三個符號 1,p 2,p 3,p 我們知道,p是乙個指標變數的名字,表示此指標變數指向的記憶體位址,如果使用 p來輸出的話,它將是乙個16進製制數。而 p表示此指標指向的記憶體位址中存放的內容,一般是乙個和指標型別一致的變數或者常量。而我們知道,是取位址運算子...