C语言数组
数组
1.什么是数组?
数组是相同类型的数据的集合。
2.数组的特征?
数组中的数据(元素)是相同类型的。
数组中的数据(元素)存放在内存中,在内存中空间是连续的。
下标(索引):
下标(索引)代表了数组中元素距离第一个元素的偏移位置。
下标(索引)从0开始的。
3.数组的定义:
一维数组的定义格式:
数据类型 数组名[数组容量];
数据类型:代表数组中数据的类型
数组容量:数组中能够存储多少个元素,数组容量可以是一个常量,
常量表达式,符号常量,但是必须是整型。
注释:
1.定义一个数组,相当于在内存空间上申请了可以容纳指定元素数量的内存单元,在内存中空间是连续的。
2.定义一个数组相当于定义了多个匿名变量,这些变量可以通过数组名[下标]来进行标识。
4.数组元素的访问:
原则:数组中的元素不能一次性访问全部元素,只能单个访问。
访问一个数组:
int a[10];
a[0]=666;
a[3]=888;
a=1; //error
a[10]=1; //error
注意事项:数组元素的访问一定不能越界。
5.数组的初始化:
定义数组的同时,用指定的数据给对应的元素进行赋值。
数据类型 数组名[数组容量]={常量1,常量2,常量3...};
注意事项:
1.数组可以部分初始化:也就是给数组中前几个元素初始化,
未被初始化的自动赋值为0。
2.如果定义数组时,未说明数组容量,系统会根据初始化的个
数来决定数组容量。
柔性数组:柔性数组的概念是在C99标准出现的,针对结构体的最后
一个成员可以是未指定大小的数组。
简单的理解方法:数组容量待定或待确定的数组。
面试题:在不知道数组类型的情况下,如何确定数组元素个数???
int n = sizeof(a)/sizeof(a[0]);
6.冒泡排序:
冒泡思想
1.一次只排好一个数据,针对n个数据,最差的情况是进行n-1可以排好
2.每次排序将相邻的数据两两比较,将数据较大的数据向后交换,等所有的数据都
比较完成,则最大的出现在最后的位置。
3.在余下的数据中,重复2操作,直到只剩下一个数。
int i,j,temp;
int n = sizeof(a)/sizeof(a[0]);
for(i=0;i<n-1;i++)
{
for(j=0;j<n-1-i;j++)
{
if(a[j]>a[j+1])
{
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
7.二维数组:
定义格式: 数据类型 数组名[行数][列数];
应用场景: 主要用于有行列要求的情况。
注意事项:二维数组在内容中是按照行顺序来进行存储的。
8.字符数组:
元素类型为char的字符型数组。
字符数组是用来存储字符串数据的。
1.字符串的输入
char buf[32];
scanf("%s",buf);
采用scanf输入时,要求字符串中不能有空格等,否则就结束了。
2.字符串的输入
char buf[32];
fgets(buf,32,stdin);
采用fgets输入时,可以获取输入的所有的字符,包括回车(\n).
3.字符串的拷贝
char buf[32];
strcpy(buf,"hello my class");
strncpy(buf,"hello my class",n);
4.字符串的拼接
char a[32]="hello";
char b[32]="kitty";
strcat(a,b); hellokitty
5.字符串的比较
char a[32]="hello";
char b[32]="kitty";
strcmp(a,b);
strcmp("hello","kitty");
6.字符串的长度
unsigned int len=strlen("hello");