C语言 假设数组int a[5]里面有五个元素这样占多少字节 20个?

Python035

C语言 假设数组int a[5]里面有五个元素这样占多少字节 20个?,第1张

一般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个元素均为不定值