- (꒪ꇴ꒪ ),hello我是祐言
- 博客主页:C语言基础,Linux基础,软件配置领域博主🌍
- 快上🚘,一起学习!
- 送给读者的一句鸡汤🤔:
- 集中起来的意志可以击穿顽石!
- 作者水平很有限,如果发现错误,可在评论区指正,感谢🙏
一、基本概念
在C语言中,数组是同一种数据类型的连续元素的集合。我们可以通过一个索引来访问数组中的特定元素。
int a[5] = {1, 2, 3, 4, 5}; // 定义一个整型数组,包含5个元素
语法释义:
“a”是数组名,即这片连续内存的名称;
“[5]”代表这片连续内存总共分成5个相等的格子,每个格子称为数组的元素;
“int”代表每个元素的类型,可以是任意基本类型,也可以是组合类型,甚至可以是数组;
而“{ }”中的元素就是赋值。
二、数组元素的引用
我们可以通过数组的索引来访问和修改数组的元素。索引从0开始,到数组长度-1结束。
int a[5] = {1, 2, 3, 4, 5};
int first = a[0]; // 访问第一个元素,结果为1
a[4] = 6; // 修改第五个元素的值,现在a[4]的值为6
三、字符数组
字符数组是一种特殊类型的数组,它用于存储字符串。我们通常在字符数组的末尾添加一个'\0'字符作为字符串的结束标记。
char str[6] = "Hello"; // 定义一个字符数组,存储字符串"Hello"
四、多维数组
C语言支持多维数组。最常见的是二维数组。
int a[2][3] = {{1, 2, 3}, {4, 5, 6}}; // 定义一个2x3的二维数组
五、数组名的含义
在C语言中,数组名是数组的第一个元素的地址。
数组名有两个含义:
1.第一含义是:整个数组
2.第二含义是:首元素地址
当出现以下情形时,那么数组名就代表整个数组:
1.在数组定义中
2.在sizeof运算表达式中
3.在取址符&中
其他任何情形下,那么数组名就代表首元素地址。即:此时数组名就是一个指向首元素的指针。
int a[5] = {1, 2, 3, 4, 5};
printf("%p\n", a); // 输出数组的地址
printf("%p\n", &a[0]); // 输出第一个元素的地址,和上一行的输出相同
六、数组下标
数组下标就是数组元素的索引,它从0开始。我们可以通过下标来访问数组的元素。
int a[5] = {1, 2, 3, 4, 5};
printf("%d\n", a[2]); // 输出第三个元素,结果为3
要值得在注意的是:
七、字符串常量
字符串常量是字符数组的一种,它是以'\0'字符结束的一系列字符。我们可以用双引号来定义一个字符串常量。
char *str = "Hello, world!"; // 定义一个字符串常量
这里要强调一下计算字符串常量的长度时,还要计算上最后一位'\0'字符。
八、零长数组
零长数组是C语言中的一种特殊结构,它在结构体定义中的大小为零。它常常用于柔性数组的实现。
用途:放在结构体的末尾,作为可变长度数据的入口。
struct flex_array {
size_t size;
int array[0]; // 零长数组
};
九、变长数组
变长数组是C99引入的一种新特性,它允许我们定义一个长度在运行时确定的数组。
void func(int n) {
int a[n]; // 定义一个长度为n的变长数组
}
变长数组仅仅指元素个数在定义时是变量,而绝非指数组的长度可长可短。实际上,不管是普通数组还是所谓的变长数组,数组一旦定义完毕,其长度则不可改变。
int len = 5;
int a[len]; // 数组元素个数 len 是变量,因此数组 a 是变长数组
int x = 2;
int y = 3;
int b[x][y]; // 数组元素个数 x、y 是变量,因此数组 b 是变长数组
int b[2][y]; // 数组元素个数 y 是变量,因此数组 b 是变长数组
int b[x][3]; // 数组元素个数 x 是变量,因此数组 b 是变长数组
以上就是我们今天关于C语言数组的一些介绍与实例,希望对初学C语言的你有所帮助喔~
更多C语言相关文章,关注专栏:
📢写在最后
- 今天的分享就到这啦~
- 觉得博主写的还不错的烦劳
一键三连喔
~ - 🎉感谢关注🎉