【c語言】陣列小練習
一維陣列
int a[] = { 1, 2, 3, 4 };
1 printf("%d\n", sizeof(a)); // 16 2 printf("%d\n", sizeof(a+0)); // 4 不是單獨放在sizeof()內是第一個元素的地址 3 printf("%d\n", sizeof(*a)); //4 *a就是啊a【0】 4 printf("%d\n", sizeof(a+1)); //4 第二個元素的地址 5 printf("%d\n", sizeof(a[1])); //4 第二個元素 6 printf("%d\n", sizeof(&a)); // 4 地址都是4個位元組(32平臺) 7 printf("%d\n", sizeof(&a+1)); //4 4後面的地址 8.printf("%d\n", sizeof(&a【0】)); //4 第一個元素的地址 9.printf("%d\n", sizeof(&a【0】+1)); //4 第二個元素的地址
分析:1.陣列名單獨放在sizeof()內部,陣列名錶示整個陣列,sizeof(陣列名)計算的是整個陣列的大小,單位是位元組 2.&陣列名,陣列名錶示整個陣列,&陣列名,取出的是整個陣列的地址 3.除此之外所有的陣列名都表示整個首元素地址
字元陣列
char a[]={‘a’,‘b’,‘c’,‘d’,‘e’,‘f’};
1.printf("%d\n", sizeof(a)); //6 2.printf("%d\n", sizeof(a+0)); //4 地址 3.printf("%d\n", sizeof(*a)); //1 字元a 4.printf("%d\n", sizeof(a【1】)); //1 5.printf("%d\n", sizeof(&a)); //4 6.printf("%d\n", sizeof(&a+1)); //4 7.printf("%d\n", sizeof(&a【0】+1)); //4 f的後面地址 8.printf("%d\n", sizeof(&a+1)); //4 第二個元素的地址
1.printf("%d\n", strlen(a)); //隨機值 因為沒有\0 2 printf("%d\n", strlen(a+0)); //隨機值 並且和上一個一樣 3.printf("%d\n", strlen(*a)); //錯誤 4.printf("%d\n", strlen(a【1】)); //錯誤 5.printf("%d\n", strlen(&a)); //隨機值 6.printf("%d\n", strlen(&a+1)); //隨機值 和1的隨機值差6 7.printf("%d\n", strlen(&a【0】+1)); //隨機值 和1的隨機值差1