Sizeof的用法;他是一个函数吗?

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

猜你喜欢

转载自blog.csdn.net/Wmll1234567/article/details/79723701