程序如下:
#include<stdio.h>
#include<string.h>
#include<malloc.c>
int main()
{
int b[5]={1,2};
char a[5]={'a','b'};
char*p=a;
printf("%d,%d,%d,%d,%d,%d\n",sizeof(a),sizeof(b),sizeof(p),sizeof(char *),sizeof(*a),sizeof(a)/sizeof(*a));
}
编辑结果:
5
20
4
4
1
5
剖析:
sizeof(a):数组a[5]的类型是char类型,在内存占一个字节,根据sizeof的计算法则:内存大小乘以类型大小,即:5*1=5.所以打印结果为5.
sizeof (b):数组b[5]是int类型,根据sizeof的计算法则得:打印结果为:20.
sizeof(p):p为指针,对于指针来说在32位pc机中,它只占4个字节,所以打印结果为:4.
sizeof(char*):char*为指针类型,同理它在内存中占4个字节。
sizeof(*a);a的数据类型为char,占1个字节,指针p指向a,表示的是它指向的类型大小,所以打印结果为:1.
sizeof(a)/sizeof(*a):这个式子,其实可以作为公式来记,它用来计算数组长度,