C語言 總結陣列指標相關知識點

2021-08-14 06:23:19 字數 2783 閱讀 4702

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