C語言陣列的一些運算 a,a 1, a 1,a 0

2021-09-30 14:23:31 字數 2094 閱讀 3200

陣列名代表整個陣列的時候只有兩種情況,

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...