关于sizeof的使用,注意其不是函数,是一个操作符关键字

程序一:

#include <stdio.h>

 

void fun(int arr[10])

{

printf("fun::%d\n"sizeof(arr));//

}

 

int main()

{

int i = 10;

short a = 0;

int arr[10];

fun(arr);

printf("%d\n"sizeof(arr));//40 

printf("%d\n"sizeof(a++));//2

printf("%d\n", a);//0

printf("%d\n", i);//10

system("pause");

return 0;

}

结果:

fun::4

40

2

0

10

请按任意键继续. . .

程序二:

定义一个数组arr,输出arr&arr的区别

#include <stdio.h>

int main()

{

int n = 10;

int arr[10] = {0};

int *p = NULL;

int (*q)[10] = NULL;

printf("%d\n"sizeof(n));//4

printf("%d\n"sizeof(int));//4

printf("%d\n"sizeof(arr));//40 

printf("%d\n"sizeof(&arr));//4

printf("%p\n", arr);//00D4FACC   &arr[0],它表示数组首元素的地址

printf("%p\n", &arr);//00D4FACC,它表示数组的地址,这两个表示意义不同

p = arr;

q = &arr;

printf("p+1=%p\n",p+1);//p+1=007DF958

printf("q+1=%p\n",q+1);//q+1=007DF97C

return 0;

}

结果:

4

4

40

4

00F5F7C8

00F5F7C8

p+1=00F5F7CC

q+1=00F5F7F0

请按任意键继续. . .