關於陣列的運算,需要注意以下幾點:
1. sizeof(陣列名):陣列名表示整個陣列
sizeof(陣列名)計算的是整個陣列的大小,單位是位元組
2. &陣列名:陣列名表示整個陣列
&陣列名取的是陣列的位址,這裡的陣列名表示整個陣列
3. 除此之外,所有的陣列名表示首元素位址
4. 二維陣列要看首元素的位址,首先要把二維陣列想成一維陣列
5. 位址是四個位元組
6. strlen的運算遇到'\0'才會結束
一維陣列
int a = ;
printf("%d\n", sizeof(a)); //16 注:a表示整個陣列
printf("%d\n", sizeof(*&a)); //16 注:*&a表示整個陣列
字元陣列
char arr = ;二維陣列printf("%d\n", sizeof(arr)); //6 注:arr表示整個陣列
printf("%d\n", sizeof(*arr)); //1 注:*arr表示首元素,即a
printf("%d\n", sizeof(arr[1])); //1 注:arr[1]表示第二個元素,即b
printf("%d\n", sizeof(*&arr)); //6 注:*&arr表示整個陣列
//strlen遇到'\0'才會結束
printf("%d\n", strlen(*arr)); //error 注:*arr表示a元素,即數字97
printf("%d\n", strlen(arr[1])); //error 注:arr[1]表示b元素,即數字98
printf("%d\n", strlen(&arr+1)); //隨機數 注:&arr+1表示從元素'f'向後數字符
printf("%d\n", strlen(&arr[0]+1)); //隨機數 注:&arr[0]+1表示從元素'b'向後數字符
char arr = "abcdef"; //包含'\0'
printf("%d\n", sizeof(arr)); //7 注:arr表示整個陣列,整個陣列有7個元素
printf("%d\n", sizeof(*arr)); //1 注:*arr表示首元素,即'a'
printf("%d\n", sizeof(arr[1])); //1 注:arr[1]表示第二個元素,即'b'
printf("%d\n", strlen(*arr)); //error 注:*arr表示'a'元素,即數字97
printf("%d\n", strlen(arr[1])); //error 注:arr[1]表示'b'元素,即數字98
printf("%d\n", strlen(&arr+1)); //隨機值 注:&arr+1表示跳過整個陣列,從元素'\0'向後數字符
printf("%d\n", strlen(&arr[0]+1)); //5 注:&arr[0]+1表示從元素'b'向後數字符,到'\0'結束
char *p = "abcdef"; //p裡面存的是字元a的位址
printf("%d\n", sizeof(p)); //4 注:p是指標變數
printf("%d\n", sizeof(*p)); //1 注:*p表示首元素,即元素'a'
printf("%d\n", sizeof(p[0])); //1 注:p[0]相當於*[p+0],表示首元素,即元素'a'
printf("%d\n", strlen(*p)); //error 注:*p表示首元素
printf("%d\n", strlen(p[0])); //error 注:p[0]表示首元素
int a[3][4] = ;printf("%d\n", sizeof(a)); //48 注:a表示整個陣列
printf("%d\n", sizeof(a[0][0])); //4 注:a[0][0]表示第一行第乙個元素
printf("%d\n", sizeof(a[0])); //16 注:a[0]表示第一行
printf("%d\n", sizeof(*a)); //16 注:*a表示第一行
printf("%d\n", sizeof(a[3])); //16 注:a[3]相當於a[1],sizeof內部表示式不參與運算
C語言陣列運算
陣列運算例子 判斷素數 構造素數表 欲構造n以內的素數表 1.令x為2 2.將2x,3x,4x直至ax構造素數表 欲構造n以內 不含n 的素數表 1.開闢prime n 初始化其所有元素為1,prime x 為1表示x為素數 2.令x 2 3.如果x是素數,則對於 i 2 x iint main i...
陣列相關運算
陣列的初始化 陣列及指標在記憶體中的儲存 一維陣列在記憶體中的儲存 有關陣列的運算 一維陣列 int a printf d n sizeof a 16這裡的a表示的是整個陣列,計算出的是整個陣列的大小,單位為byte printf d n sizeof a 0 a沒有單獨放在sizeof括號後面,此...
C語言 位運算相關總結
1.位運算符號 取反,不分正負數 標準規定在右邊補0 正數則左邊補0,負數標準沒有規定在左邊補充的數字,分為邏輯右移和算術右移,具體由編譯器決定,windows平台和gcc採取算術右移即負數補1 2.常見的二進位制位的變換操作 去掉最後一位 101101 10110 x 1 在最後加乙個0 1011...