【C语言】数组:
- 存储一系列相同类型的数据。
- 内存的地址连续。最低的地址对应第一个数据,最高的地址对应最后一个数据。
- 可用索引访问。第一个数据索引号为0。
- 也可以用指针处理数组。一般,数组名自动转换为指向数组首元素的指针。
(1-1)声明数组,为数组赋值
声明数组:元素类型 数组名[元素数量];
为数组赋值(索引号从0开始):数组名[索引号] = 数据;
int numbers[5]; // 声明数组
numbers[0] = 1; // 为数组中第一个元素赋值
numbers[1] = 2; // 为数组中第二个元素赋值
...
numbers[4] = 5; // 为数组中第五个元素赋值
(1-2)初始化数组
① 元素类型 数组名[元素数量] = {数据1, 数据2,...};
元素数量可省略,元素数量默认为数组初始化时的元素个数。
② 元素类型 数组名[ ] = {数据1, 数据2,...};
// 初始化数组
int numbers[5] = {1,2,3,4,5};
int numbers[] = {1,2,3,4,5};
(2)访问数组元素:数组名[索引号]
int numbers[] = {1,2,3,4,5};
numbers[2] // 访问数组第3个元素(索引号从0开始)
例如:
#include <stdio.h>
int main(void)
{
int numbers[5];
numbers[0] = 1;
numbers[1] = 2;
numbers[2] = 3;
numbers[3] = 4;
numbers[4] = 5;
printf("%d\n", numbers[2]);
return 0;
}
#include <stdio.h>
int main(void)
{
int numbers[] = {1,2,3,4,5};
int k = numbers[2];
printf("%d\n", k);
return 0;
}
(3)获取数组长度
数组长度不是数组元素的数量,而是数组的存储大小(单位byte)。数组元素的数量=数组长度/每一个元素的长度。
sizeof(数组名); // 获取数组长度
例如:
#include <stdio.h>
int main(void)
{
int numbers[] = {1,2,3,4,5};
int length = sizeof(numbers);
int num = length /sizeof(numbers[0]);
printf("numbers's length is %d, numbers's elements are %d\n", length, num);
return 0;
}
// 结果为:64位的计算机int类型4bytes,5个int数据共20bytes
// numbers's length is 20, numbers's elements are 5
补充:【C语言】字符数组:
1-1、初始化数组:char 数组名[字符数量] = 字符串;
注意:① char:单个字符,基本数据类型。字符串:一串字符,C语言不存在字符串数据类型。② 字符串的结尾符是\0,因此字符数量+1。
#include <stdio.h>
int main(void)
{
char s[6] = "hello"; // 字符串结尾是\0
printf("%s,the first char is %c\n", s, s[0]);
return 0;
}
1-2、复制字符串到字符数组的存储区域
#include <stdio.h>
#include <string.h>
int main(void)
{
char s[6]; // 为数组提供存储空间,注意字符串结尾是\0
strcpy(s, "hello"); // 复制字符串,遇到结束符\0就停止
printf("%s,the first char is %c\n", s, s[0]);
return 0;
}
1-3、指针变量。此处的指针一开始没有设置指向,不存在指向混乱。
指针变量是用来存放内存地址的变量。需提前声明:基类型 *指针变量名;
#include <stdio.h>
int main(void)
{
char *s; // 指针变量声明
s = "hello";
printf("%s,the first char is %c\n", s, s[0]);
return 0;
}
可能遇到的报错:
解决:尝试使用以上3种方法操作字符数组。
以下操作是错误的。
2、获取数组中的字符个数:即字符数组中有多少个字符(不包括结尾符\0)
标准库string.h中的strlen(字符数组)
#include <stdio.h>
#include <string.h>
int main(void)
{
char s[6] = "hello";
printf("%d\n", strlen(s)); // 获取字符个数
return 0;
}
// 结果为:
5