1.一直以来以为sizeof是一个函数,看过c语言深度剖析才知道,sizeof是一个骗子,它伪装的很好~~~
以下我们用实际代码来告诉你它其实是 关键字
#include<stdio.h>
int main()
{
int i = 0;
printf("%d %d %d\n",sizeof(int),sizeof(i),sizeof i);
return 0; }
我们可以看出sizeof i 竟然可以编译并运行通过,函数调用必定带括号的,由此看来sizeof其实是关键字
2.我们先来看看一段实验程序
short *sp = NULL;
printf("%d %d\n",sizeof(sp),sizeof(*sp));
int *ip = NULL;
printf("%d %d\n",sizeof(ip),sizeof(*ip));
明显带上*就是计算指针指向的 值的类型大小,而指针无论是何类型,都是4个字节
再来:
int a[100];
printf("%d %d %d %d\n",sizeof(a),sizeof(a[100]),sizeof(&a),sizeof(&a[0]));
我们可以知道,数组名就是代表整个数组的大小,
再如下:
#include<stdio.h>
void fun(int b[100]);
int main()
{
int b[100];
fun(b);
return 0;
}
void fun(int b[100])
{
printf("%d\n", sizeof(b));
}
这里涉及到数组名在函数中退化的问题,即在函数中作为形参是,退化为一个指针,故求出来的大小为4