2.1 C語言陣列與指標
指標和陣列
const int *p; int const *p; int *const p; const int *const p;
常量指標 常量指標 指標常量 常量指標常量
*p不變 *p不變 p不變 p和*p都不變
char *p="abcdef"; p指標佔有4位元組,其字串儲存在靜態區
char a[]="12345\0"; a陣列佔有7位元組,其字串儲存在棧上面
這樣定義即字串陣列,使字串結尾有'\0',
編譯器還是會在字串後面加上'\0'
a = &a 但是意義不同
a 代表a[0]元素的地址
&a 代表 a 陣列的地址
sizeof(a)=7 計算a陣列的大小
sizeof(&a)=4 gcc中始終等於 4 (無論是什麼陣列)
a+1 等於 a[1]的地址
&a+1 等於 a[sizeof(a)+1]的地址
指標和指標的減法運算有意義:間隔距離是多少個單位(基型別寬度)
指標和整數的加減運算有意義:以基型別寬度為單位移動指標
定義為陣列,宣告為指標;定義為指標,宣告為陣列,這兩種都是錯誤的.
檔案1:
char a[100]; char *p= "abcdef";
檔案2:
extern *a; extern char p[];
函式指標
(*(char**(*)(char**,char**))0)(char**,char**);
char *(*pf[3])(char *p); 函式指標陣列
char *(*(*pf)[3])(char *p); 函式指標陣列的指標