sizeof是关键字,是一种特殊的运算符,而不是函数。
示例程序:
运行结果如下(32位机器上运行):
示例程序:
#include <stdio.h>
#include <malloc.h>
void getMemory1(char a[100]){
char *p = (char *)malloc(100);
printf("sizeof(a):%d,sizeof(p):%d\n",sizeof(a),sizeof(p));
}
int main(void){
int i = 0;
char a[100];
char *p;
int *p1 = NULL;
char *p2;
p2 = "123";//指向字符串常量的指针,字符串常量存放在静态储存区
getMemory1(a);
p = a;
printf("%d\n",sizeof(int));
printf("%d\n",sizeof(i));
//printf("%d\n",(sizeof int));
printf("%d\n",(sizeof i));
printf("sizeof(a):%d\n",sizeof(a));
printf("sizeof(a[100]):%d\n",sizeof(a[100]));
printf("sizeof(&a):%d\n",sizeof(&a));
printf("sizeof(&a[0]):%d\n",sizeof(&a[0]));
printf("sizeof(p):%d\n",sizeof(p));
printf("sizeof(*p):%d\n",sizeof(*p));
printf("sizeof(p1):%d\n",sizeof(p1));
printf("sizeof(*p1):%d\n",sizeof(*p1));
printf("sizeof(p2):%d\n",sizeof(p2));
printf("sizeof(*p2):%d\n",sizeof(*p2));
printf("sizeof(*p2+1):%d\n",sizeof(*p2+1));
printf("sizeof(*(p2+1)):%d\n",sizeof(*(p2+1)));
return 0;
}
运行结果如下(32位机器上运行):
sizeof(a):4,sizeof(p):4
4
4
4
sizeof(a):100
sizeof(a[100]):1
sizeof(&a):4
sizeof(&a[0]):4
sizeof(p):4
sizeof(*p):1
sizeof(p1):4
sizeof(*p1):4
sizeof(p2):4
sizeof(*p2):1
sizeof(*p2+1):4
sizeof(*(p2+1)):1