1:陣列在記憶體中是連續存放的。
2:記憶體中的乙個記憶體單元對應乙個位址。
3:在32位平台上指標是4個位元組,64位平台8個位元組。
4;陣列的陣列名其實是陣列首元素的位址。
1: sizeof(陣列名),這裡陣列名表示整個陣列。
2: &陣列名,這裡陣列名表示整個陣列。
例子:(32位)
#includeint main()
; // 一維陣列 //(位址)int整形4個位元組長度
printf("%d\n",sizeof(a)); //16 sizeof(陣列名)代表整個陣列,a的長度
printf("%d\n",sizeof(a+0)); //4 a[0]的位址的長度
printf("%d\n",sizeof(*a)); //4 『*』解引用,元素a[0]的長度
printf("%d\n",sizeof(a+1)); //4 第二個元素位址的長度
printf("%d\n",sizeof(a[1])); //4 第二個元素的長度
printf("%d\n",sizeof(&a)); //4 整個陣列a的位址的長度 (取陣列位址也是位址)
printf("%d\n",sizeof(*&a)); //16 陣列a的位址解引用是整個陣列的長度
printf("%d\n",sizeof(&a[0])); //4 第乙個元素的位址的長度
printf("%d\n",sizeof(&a[0]+1)); //4 第二個元素的位址的長度
return 0;
}
2:
#include#includeint main()
;//字元陣列//字元型乙個位元組長度
printf("%d\n", sizeof(arr)); // 6 陣列arr的長度
printf("%d\n", sizeof(arr+0)); // 4 (首元素)arr[0]的位址的長度
printf("%d\n", sizeof(*arr)); // 1 解引用首元素a[0]的長度
printf("%d\n", sizeof(arr[1])); // 1 元素a[1]的長度
printf("%d\n", sizeof(&arr)); // 4 陣列arr的位址的長度
printf("%d\n", sizeof(&arr[0]+1));// 4 元素arr[1]的位址的長度
printf("%d\n", strlen(arr)); //隨機值 隨機值,沒有'\0'結束字元產生隨機值
printf("%d\n", strlen(arr+0)); //隨機值 隨機值
// printf("%d\n", strlen(*arr)); //err strlen操作接受位址,將a的ascii碼作為位址導致錯誤
// printf("%d\n", strlen(arr[1])); //err strlen操作接受位址,將b的ascii碼作為位址導致錯誤
printf("%d\n", strlen(&arr)); //隨機值 從arr首元素位址開始,遇到第乙個'\0'的長度
printf("%d\n", strlen(&arr[0]+1));//隨機值 從arr[1]開始,遇到第乙個'\0'(不包括'\0')的長度
return 0;
}
3:
#include#includeint main()
4:
#include#includeint main()
5:
#include#include#includeint main()
; //二維陣列 (二維陣列首元素是第一行)
printf("%d\n",sizeof(a)); //48 整個二維陣列的總長度
printf("%d\n",sizeof(a[0][0])); //4 a[0][0]的長度
printf("%d\n",sizeof(a[0])); //16 第0行的長度
printf("%d\n",sizeof(a[0]+1)); //4 a[0][1]的位址的長度
printf("%d\n",sizeof(a+1)); //4 第2行的位址的長度
printf("%d\n",sizeof(&a[0]+1)); //4 第2行的位址的長度
printf("%d\n",sizeof(*a)); //16 第0行的長度
printf("%d\n",sizeof(a[3])); //16 sizeof()內部不參與運算,並沒有訪問,相當於a[i]第i行,任意一行長度為16
return 0;
}
C語言指標關鍵知識點總結
三 指標對比 四 空指標null與nul以及void指標 在我們目前所學到的語法中,星號主要有三種用途 如果乙個指標指向了陣列,我們就稱它為陣列指標 array pointer 重點 陣列名是常量,它的值不能改變,而陣列指標是變數 除非特別指明它是常量 它的值可以任意改變。也就是說,陣列名只能指向陣...
C語言 C 指標知識點總結詳解
如果把某一塊已經開闢的記憶體空間比作房間,那麼指標就是一把鑰匙。房間有大有小,而鑰匙就那麼大,所以指標所占用的位元組為4位元組。這把鑰匙可以根據你的設定來讓它開哪個房間,但是,最多只能開乙個房間。1 定義 我們平常見到的定義指標有兩種寫法 int p和int p,其實這兩種寫法效果是一樣的,但是為了...
C語言陣列專題知識點總結
c語言陣列專題知識點易錯點總結及做題感悟一.知識點總結 1.一維陣列的定義和初始化.注 c語言陣列的下標都是從0開始的 在定義陣列時不能使用變數定義陣列的大小,如果前面沒有對n進行巨集定義 define n 5 則a n 則不對,因為n不是乙個確定的數 在對陣列定義時,不要讓陣列下標越界訪問 2.二...