一般int类型占4个字节,数组a中有5个int类型的元素,即有 4 * 5 = 20个字节。一般来说在C语言中对于数组所占的字节,用sizeof运算符获取。执行步骤如下:
#include <stdio.h>。
int main()。
{。
int a[5]。
printf("数组a所占的字节:%d\n", sizeof(a) )。
return 0。
}。
扩展资料:C语言特点:
1、C语言是一个有结构化程序设计、具有变量作用域(variable scope)以及递归功能的过程式语言。
2、C语言传递参数均是以值传递(pass by value),另外也可以传递指针(a pointer passed by value)。
3、不同的变量类型可以用结构体(struct)组合在一起。
4、只有32个保留字(reserved keywords),使变量、函数命名有更多弹性。部分的变量类型可以转换,例如整型和字符型变量。通过指针(pointer),C语言可以容易的对存储器进行低级控制。预编译处理(preprocessor)让C语言的编译更具有弹性。
先上结论:
对于int a[5],*p
p=a或p=&a[0]是正确的
p=&a严格来说是错误的
首先要搞清楚a与&a的区别:a表示数组首元素的首地址,即元素a[0]的地址;&a表示整个数组的地址。二者的值是相同的,但意义并不一样。正如成都市政府与四川省政府的地址都在成都,但二者表示的含义不同。
如下图所示,a表示a[0]的地址
&a则表示整个数组的地址
二者的值之所以相同,因为地址是取自第一个字节的地址,数组元素a[0]的第一个字节与整个数组的第一个字节显然是相同的。
a与&a[0]及&a的值如下:
1244980,1244980,1244980
a+1与&a[0]+1值如下:
1244984,1244984
但&a+1的值为1245000。
a+1与&a[0]+1都是表示下一个数组元素的地址,以元素为单位相加,地址值+4。而&a+1表示下一个数组的地址,以数组为单位相加,地址值+20.
所以,p=a或p=&a[0]是正确的,表示指针p指向数组的首元素。
楼下几位,你俩在胡扯吗?int a[5]={1}类似这么写,没有明文给出初始化值的元素,默认值是0 大括号里的1是第一顺序位置,对应a[0],那么1是给a[0]初始化写入的。后面那4个元素,没给数据,因为前面给了一部分,所以后面的才默认赋予0如果只是int a[5]那么当然是变量定以后未予赋值,a中5个元素均为不定值