一、一维数组
定义:相同数据类型的集合,一片连续的内存空间,所存放的数据类型一样
数组的定义:
数据类型 数组名[数组的长度];
数据类型可以自定义,可以是一个数组、结构体、指针等,但不能是一个函数
①数组名子代表的含义:
- 数组的名字代表整个数组;
- 数组的名字代表数组的基地址(连续内存地址的起始地址)
printf("%p\n",a); //数组的基地址
printf("%p\n",&a); //整个数组的地址
printf("%p\n",&a[0]); //数组首个元素的地址
②数组的访问:
数据类型 数组名[元素下标];
例:int a[10]; //定义了一个int型的数组a,长度为10
数组元素访问方法:通过数组名加下标进行访问,如a数组的第一个元素a[0],数组下标的范围为0~数组长度-1结束。
③数组的赋值:(定义时赋初始值)
- 完全赋值:
int a[3]={1,2,3}; //定义了一个长度为3的int型数数组并初始化赋值,3个元素为1,2,3
/*数组在完全定义状态下可省略数组长度,其他情况下数组长度都不可以省略*/
int b[ ]={1,2,3}; //数组b的长度为3
- 不完全赋值:
int c[6]={1,2,3,4}; //未被初始化的元素则自动赋值为0
- 分段赋值:
int d[7]={1,[2 ... 4]=7,7}; //a[2]~a[4]为7
int d[10]={1,2,[4]=7,3,[6 ... 7]=1}; //a[4]为7,a[6]~a[7]为1
(定义时未赋初始值):
int a[10];
//单独给每一个元素赋值
a[0]=100; //未被初始化的元素值不确定
例:定义一个长度为10的字符型数组str并赋值“hello”,在将数组字符输出到终端上:
二、字符数组:
专门用于存放字符的数组,在c语言中字符串数组与字符数组在使用时没有明显区别。但字符串数组与字符数组略有不同,字符串数组末尾有结束标志'\n'。
#include <stdio.h>
int main()
{
char str[5]={'h','e','l','l','o'}; //没有结束标志'\0'
char str1[6]={'h','e','l','l','o','\0'};//有结束标志'\0',结束标志也算到字符串数组的长度中
char str2[6]="hello";
int len=sizeof(str)/sizeof(str[0]); //将str数组的长度赋值给len
for (int i = 0; i < len; i++)
{
printf("%c",str[i]);
}
printf("\n");
printf("str1:%s\n",str1);
printf("str2:%s\n",str2);
return 0;
}
输出为:
hello
str1:hello
str2:hello