第六章: 数组
补充基本概念:关键字 :由程序语言事先定义的
标识符:由程序员命名
1.数组初始化
元素类型 数组名 【元素数量】={逗号分隔的元素内容}
2.初始化列表短于数组长度
int arr[10]={1,2,3,4,5}
*数组有十个元素,而初始化列表只指定了5个元素,那么剩下元素被取代为零
*若初始化列表什么都没有,所有元素将被填为零
*若初始化列表长于数组长度,则代码无法编译通过
*方括号【】可以不填
*访问数组元素是从0开始的
3.小心数组越界
*如果数组只有10个元素,我们访问或修改这10个元素以外的元素,那么结果是未定义的。这意味着程序看上去可以运行,但运行的结果很怪,或异常终止。
警告:千万不要越界访问或修改数组元素
eg. int arr[10]={};
printf("%d\n,arr[10]") // 下标为0到9,访问下标10的元素属于越界访问。
怎么判断呢?
可以理解 定义时是 int arr[] 而使用时(printf...)表示下标
补充:冒泡排序(我的天,这个图简直了,直接秒懂 )
4.多维数组
eg.1.数组名
2.元素类型:int[10]
3.元素数量:5
按理来说应该写成 int[10] B[5];
但数组名左边的方括号都移到右边来
即 Int B【5】【10】;
B数组含5个元素,每个元素都是含10个int元素的数组
声明一个数组
元素类型 数组名 【元素个数】 【元素个数】 若元素类型中含有方括号,移到最右边
5.字符数组和字符串
*字符串常量末尾会自动添加 '\0' 结尾(所以元素个数要比实际字符个数>=1)
*打印字符数组
int main() { char str[20] = { 'H','e','l','l','o','w','o','r','l','d' }; printf(str); printf("\n"); printf("%s", str); printf("\n"); printf("\n"); return 0; }
6.使用strlen测量字符串长度
*strlen可以接受一个字符串作为参数。
*strlen返回值为这个字符串的长度
*使用strlen函数,需包含头文件string.h
*与sizeof区别:strlen:测量第一个数组到\0的长度
sizeof:测量数组本身的长度
char str[20];
scanf("%s",str);//将键盘输入的一串字符储存到字符数组str
7.冒泡排序讲解
#include <stdio.h>
int main()
{
int arr[10] = { 12,78,43,54,15,84,34,78,11,45};
//外层控制行
for (int i = 0; i < 9; i++)
{
//内层控制列
for (int j = 0; j < 9 - i; j++)
{
//比较两个元素
if (arr[j] > arr[j + 1])
{
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
for (int i = 0; i < 10; i++)
{
printf("%d\n", arr[i]);
}
return 0;
}