int a[100]; printf("%d %d ",sizeof(a), sizeof(a[100])); 输出为什么是400 4 ,而不是4 400???

如题所述

sizeof(a)是a数组的长度*数组元素的大小=100*sizeof(int)=400 (现在一般都是400,tc下可能是200),而 sizeof(a[100])(说一句,这样引用是错误的,因为a数组中元素下标最大是99)是第101个元素的大小,即sizeof(int)=4。不过好多编译器可能会报错或者有警告的
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-08-30
sizeof(a) 表示数组的大小 即100*4 不是指针,sizeof表示相对首地址偏移量为100*4个字节的内存单元(int)的大小 即4个字节
谢谢采纳
第2个回答  2011-08-30
sizeof(a)是a数组的长度*数组元素的大小=100*sizeof(int)=400 ,而sizeof(a[100])返回的事a[100]这个元素所占的空间大小
第3个回答  2011-08-30
a[100]是数组的最后一位

...printf("%d %d ",sizeof(a), sizeof(a[100])); 输出为什么是400 4...
sizeof(a)是a数组的长度*数组元素的大小=100*sizeof(int)=400 (现在一般都是400,tc下可能是200),而 sizeof(a[100])(说一句,这样引用是错误的,因为a数组中元素下标最大是99)是第101个元素的大小,即sizeof(int)=4。不过好多编译器可能会报错或者有警告的 ...

...main() { int a[100]; printf("%d",sizeof(&a)); }求解释&a,这是...
&a是取地址的意思,那么这里的sizeof()是求字节。整句的意思就是求a变量地址的字节数。那么a是整形变量,一般分配2字节存储整形数,所以答案是2

为什么sizeof(&a)的值为400;程序如下:
printf("%d\\n",sizeof(&a));输出的值都是四百,正如前面提到的,他们的地址值是一样的,sizeof本来就是用来求数组的长度的,故得到四百很容易理解;而sizeof(&a)也是四百,是因为它每一次加一,就跳过四百个字节,就好比前面的指针p,因为他是int型的,所以每次跳过4个字节。。。不知讲清楚了没。

为什么sizeof一直是四。。。
因为将数组传递到函数里后,数组就退化为指针了,也就是说只有在定义数组的那个函数里才能得到数组的sizeof。以下几种写法是等价的:void f(int *a);void f(int a[]);void f(int a[10]);void f(int a[100]); \/\/ 这个数字是没用的,会被忽略掉void f(int a[20][10]); \/\/ 但这个...

int a[100];sizeof(&a)
VC6.0是一个很老的编译器了,与标准C都有不少不兼容的地方,&a的类型是一个指向指针的指针,但还是属于一个指针,在32位机上指针是32位的,所以sizeof(&a)应该是4。

int a[100]; sizeof(&a[0])的大小是多少?
include <stdio.h>int main(){int a[100];printf("%d\\n", sizeof(a[0]));\/\/4,单个数组元素大小,与平台上的int长度相同,一般4字节printf("%d\\n", sizeof(&a[0]));\/\/4,第一个元素的地址指针,32位机上为4,64位机上8printf("%d\\n", sizeof(a));\/\/400,数组总大小return 0;} ...

sizeof运算符如何使用?
sizeof()求数据类型所占字节数。括号中可以是数据类型名,变量名,常量 如求整型所占字节数。可以用以下方法:sizeof(int)sizeof(100)或者 int a;sizeof(a)完整程序:include<stdio.h> main(){int a;printf("%d\\n",sizeof(int));printf("%d\\n",sizeof(100));printf("%d\\n",sizeof(a...

sizeof返回的值到底是什么?
也就是说,sizeof(表达式)返回的值与表达式的结果的类型有关,另外sizeof返回的值本身的类型是unsigned long int的。比如:假设在一个系统上,int为4字节,long int为4字节,long long int为8字节,float为4字节,double为8字节。则,sizeof(1)返回4,sizeof(1L)返回8,sizeof(1LL)返回8。同时...

...sizeof(a)和sizeof(&a)有什么区别,sizeof(a)代表什么?希望能详细回 ...
sizeof(a)是把a作为一个数组类型来测试大小,结果是数组占用的字节数。sizeof(&a)是把&a作为一个地址类型来测试大小,结果是4(64位系统里可能是8)。数组名本身在计算中会自动转化成第一个元素的地址,但sizeof测试的时候不做计算,不转化。

C语言中 sizeof 运算的值是在编译时还是运
printf("%d\\n",sizeof(ary));\/\/ok.输出10 但在没有完全实现C99标准的编译器中就行不通了,上面的代码在VC6中就通不过编译。所以我们最好还是认为sizeof是在编译期执行的,这样不会带来错误,让程序的可移植性强些。 基本数据类型的sizeof 这里的基本数据类型指short、int、long、float、double这样的简单内置...

相似回答