sizeof

来源:互联网 发布:数据库市场占有率 2016 编辑:程序博客网 时间:2024/06/05 02:21

C语言中判断数据类型或者表达式长度符;不是一个函数,字节数的计算在程序编译时进行,而不是在程序执行的过程中才计算出来。

#include<stdio.h>
int main()
{
int a = 0;
int b = 0;
int arr[10] = {1,2,3,4,5,6,7,8,9,10};
printf("%d\n",sizeof(arr));
printf("%d\n",sizeof(&arr));
printf("%d\n",sizeof(arr+1));
printf("%d\n",sizeof(&arr+1));
printf("%d\n",sizeof(b=a+2));
printf("%d\n",sizeof(b));
return 0;
}

如上的程序,输出为40,4,4,4,4,4;所以不难看出只有当写成printf("%d\n",sizeof(arr));时计算的是整个数组的长度;其余的都是在计算字节长度;

当然sizeof也不是函数,所以他没有输出a+2的值,而是输出了int型所占的字节数4.

如果求一个数组的长度,我们可以这样写

int arr[10] = {1,2,3,4,5,6,7,8,9,10};

sizeof(arr)/sizeof(arr[0])就求出了数组的长度。

同样我们要知道以下的情况输出的是什么:

#include<stdio.h>
int main()
{
char arr[]="abcdef\0";

char *parr="abcdef";
printf("%d\n",sizeof(arr));
printf("%d\n",sizeof(parr));
printf("%d\n",strlen(arr));
printf("%d\n",strlen(parr));
return 0;
}

此时输出的是8,4,6,6;第一个求得是数组的长度;第二个求得是指针变量的大小,所以是四个字节;第三个求得是字符串长度,不算\0所以输出的是6;同样第四个也是求字符串长度,所以也是6。

0 0
原创粉丝点击