陣列名代表整個陣列的時候只有兩種情況,
sizeof(陣列名),這裡的陣列名表示整個陣列。
&陣列名,這裡的陣列名表示整個陣列。
#include
int main()
;printf("%d\n",sizeof(a)); //16 a表示陣列的首元素,首位址因此用sizeof計算它們的值,就是整個二維陣列所占用的記憶體空間
printf("%d\n",sizeof(a+0)); //4 a+0為a[0]的首位址
printf("%d\n",sizeof(*a)); //4 首元素大小 就相當於 sizeof(*a)=4 =sizeof(a[0]);
printf("%d\n",sizeof(a+1)); //4 從首元素向後偏移乙個整型的位址,即第二個元素的位址
printf("%d\n",sizeof(a[1])); //4 a[1]的位元組數為4
printf("%d\n",sizeof(&a)); //4 &a為陣列位址和a即a[0]的位址一樣
printf("%d\n",sizeof(&a+1)); //4 跳過整個陣列 指向陣列後面的乙個位址
printf("%d\n",sizeof(&a[0])); //4 首元素位址
sizeof(a)表示整個陣列大小,*a=*(a+0);*a表示陣列的首位址,因此sizeof(*a)=4*sizeof(int)為16
總結為一句話,不論是一維陣列,還是二維陣列,如果直接sizeof陣列名,那麼大小為整個陣列所占用的記憶體空間,如果計算類似a+0,a+1等陣列名進行了偏移運算,那麼它就代表指向某個元素的指標
#include
int main()
;printf("%d\n",sizeof(arr)); //6 整個陣列大小
printf("%d\n",sizeof(arr+0)); //4首元素位址大小
printf("%d\n",sizeof(*arr)); //1首元素大小
printf("%d\n",sizeof(arr[1])); //1第二個元素大小
printf("%d\n",sizeof(&arr)); //4陣列的位址
printf("%d\n",sizeof(&arr+1));//4陣列後的位址
printf("%d\n",sizeof(&arr[0]+1));//4第二個元素的位址
;printf("%d\n",sizeof(a)); //48 a表示陣列的首元素,首位址因此用sizeof計算它們的值,就是整個二維陣列所占用的記憶體空間
printf("%d\n",sizeof(a[0][0])); //4 a+0為a[0][0]的首位址
printf("%d\n",sizeof(a[0])); //16 第一行元素
printf("%d\n",sizeof(a[0]+1)); //4 第一行的第二個元素位址
printf("%d\n",sizeof(a+1)); //4 第二行位址
printf("%d\n",sizeof(&a[0]+1)); //4 第二行位址
printf("%d\n",sizeof(*a)); //16 第一行
printf("%d\n",sizeof(a[3])); //16 第四行
黑馬 C語言的一些基礎 1
for迴圈語句 用for迴圈計算1 100的和 include include int main void printf 1 2 3 99 100 d n sum return 0 用 define定義巨集 define name 替換字串 include include define top 0 ...
C語言 1 一些練習題
include includeint main include includeint main 思路分析 建立乙個臨時變數max,陣列遍歷出的每乙個數都與max比較,如果比max大就賦給max,最終輸出的max就是陣列中最大的數 include includeint main int max 0 f...
一些簡單問題的c語言程式設計1
1.給定兩個整形變數的值,將兩個值的內容進行交換。正常思路,利用第三個變數進行簡單轉換。define crt secure no warnings include includeint main 2.不允許建立臨時變數,交換兩個數的內容。轉向思路,通過進行兩變數之間的加減建立出無形的變數。defin...