这里写目录标题
数组
1,一维数组的创建和初始化
- 数组是一组相同类型元素的集合
- 数组的创建方式:
数据类型——数组名称(和变量名命名规则一样)——[常量]
例: int arr[10];这就是一个整型数组 - 那么错误的数组创建:
例: int i = 10;
int arr[i];//这是错误的创建因为在数组中,中括号中存放的为常量,但i为变量所以不能这样写 - 数组的种类:
char arr[10];//字符型数组
double arr[10];//双精度浮点型数组
float arr[10];//单精度浮点型数组
…等等
注意: []中只能用常量不能用变量,[]为数组的下标引用操作符,用来方位数组中的元素。
2,一维数组的使用
数组的初始化是指,在创建数组的同时给数组的内容一些合理的初始值(初始化)
- 例: int arr[10]={1,2,3}(这种称为不完全初始化)数组中前3个元素赋予了1,2,3
- 例: char arr[10]={‘a’,‘b’,‘c’}同上不完全初始化
- 例: char arr[10]={‘a’,98}
- 例: char arr[]=“abcdef”//数组会自动根据所赋予的字符串长度来给与字符串足够的空间像这个字符串数组会赋予它7个空间
arr[0]=a
arr[1]=b
arr[2]=c
‘…
arr[6]=\0
注意: sizeof和strlen计算数组长度的差异
- sizeof 计算的是数组arr所占空间大小
- 而strlen 是计算字符串的长度,所以找到\0就挺止,并且\0不算字符串的内容
- 例: arr[10]="abcdef"用strlen计算长度求得长度为6,但用sizeof求得长度为7
注意: 数组中存储字符和字符串的区别
char arr1[]={‘a’,‘b’,‘c’};
char arr2[]=“abc”;
printf("\d",sizeof(arr1));//长度为3
printf("\d",sizeof(arr2));//长度为4
printf("\d",strlen(arr1));//长度为15(长度为15的原因是:strlen函数只有碰到’\0’时才停止计算,但数组arr1中是3个字符结尾没有\0,往下数,到第15个碰到\0)
printf("\d",strlen(arr2));//长度为3
3,一维数组在内存中的存储
格式控制符%p中的p是指针的缩写,用来表示储存空间中元素的地址
&为取地址符,
运行结果:
- 地址都是以16进制的形式来表示的
- 10进制:0~9
- 16进制:0~9,a,b,c,d,e,f
- 这里面a表示10,b表示11,c表示12,d表示13,e表示14,f表示15
- 例如上图: 中地址末尾数字4,8,c(c表示12)12再加为16进一位,所以当末尾为16向前进一位时,倒数第二位加一由A变为B
- 注意: 例如上图中数组元素为整形元素所以都占4个字节所以每个元素的地址都相差4
- 数组中元素的地址随着数组下标的增加而增加,并且还是有规律的增加,所以数组中的元素是连续存放的,如上图所示。
4,二维数组的创建和初始化
(1)二维数组的创建
例: //数组的创建
int arr[3][4];//表示可容纳3行4列元素
char arr[3][5];
double arr[3][2];
(2)二维数组的初始化
例: //数组的初始化
int arr[3][4] = {1,2,3,4};//表示1行4列的元素
int arr[3][4] = {{1,2},{3,4}};//表示2行2列的元素
int arr[3][4] = {{1,2,3,4},{1,2}}//表示第1行有4列,第2行有2列
int arr[][4] = {{2,3},{4,5}};//表示2行2列的元素
(3)二维数组的使用
例:
#include<stdio.h> int main() { int arr[3][4]={{1,2,3,4},{5,6,7,8}}; int i = 0,j = 0; for(i=0;i<3;i++) { for(j=0;j<4;j++) { printf("%d ",arr[i][j]); } printf("\n"); } return 0; } //打印出来的结果为1 2 3 4 // 5 6 7 8
(4)二维数组在内存中的存储
代码如下:
二维数组存储地址分析:
- 上述图中表示了二维数组中元素的地址也是连续的,知晓其中一个元素的地址就可以顺藤摸瓜的推出其他元素的地址。
- 注意: 二维数组也可以把它当作一维数组那样去看,就像上图中arr[0][j] 其中arr[0]可以把它看作数组名 这样二维数组就变为了一个一维数组
5,数组作为函数参数
有时我们写代码是会需要将数组作为函数参数,比如我要实现一个冒泡排序 函数将一个整形数组排序。那我们将会这样使用该函数
代码如下