【C语言学习】国嵌22__数组基础

1、数组的概念

数组是相同类型的变量的有序集合

int a[5];

数组包含5个int类型的数据

a代表数组第一个元素的起始地址,这20个字节的名字为a。a[0], a[1]等都是a中的元素,并非元素的名字,数组中的元素没有名字。每个元素都是int型数据。

2、数组的大小

# 数组在一片连续的内存空间中存储元素

# 数组元素的个数可以显式或隐式指定

#include <stdio.h>
#include <string.h>

int main()
{
int a[5] = {1, 2}; //剩余的三个元素,编译器会初始化为0,这是编译器的行为 
int c[5];
int d[5] = {0}; //这里对数组进行了初始化,巧妙的运用了编译器特性,
//它会自动对未定义数组元素初始化为0 
int b[] = {1, 2};
int i;
  //memset(c, 0, sizeof(c)); //这个不是初始化,是对数组赋值 

printf("%d, %d \n", sizeof a, sizeof a/sizeof *a);
printf("%0x, %0x \n", a, &a);

printf("%d, %d \n", sizeof b, sizeof b/sizeof *b);

for(i = 0; i < 5; i++)
{
printf("%d\n", a[i]);
}

for(i = 0; i < 5; i++)
{
printf("%d\n", c[i]);
}

for(i = 0; i < 5; i++)
{
printf("%d\n", d[i]);
}
return 0;
}

运行结果:

20, 5
22ff38, 22ff38
8, 2
1
2
0
0
0
2008950864
-1
2009091625
2009091650
4200820
0
0
0
0
0

3、数组地址与数组名

# 数组名代表数组首元素的地址

# 数组的地址需要用取地址符&才能得到

# 数组首元素的地址值与数组的地址值相同

# 数组首元素的地址与数组的地址是两个不同的概念

你家所在的楼房和你家的GPS地址相同,但意义不同。

4、数组名的盲点

# 数组名可以看做一个常量指针

# 数组名“指向”的是内存中数组首元素的起始位置

# 在表达式中数组名只能作为右值使用

# 只有在下面场合中数组名不能看做常量指针

1、数组名作为sizeof操作数的参数时,它代表整个数组,而非首元素的常量指针

2、数组名作为&的参数,它代表整个数组,所以&a(a为一个数组)表示数组地址。

数组小结

# 数组是一片连续的内存空间

# 数组的地址和数组首元素的地址意义不同

# 数组名在大多数情况下被当成常量指针处理

# 数组名其实并不是指针,在外部声明时不能混淆





转载于:https://my.oschina.net/u/141132/blog/265611

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值