c语言——数组

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

c语言——数组


1.基本的数据类型:int char float
构造类的数据类型:数组,指针,结构体,共用体,枚举;

数组类型表达:
数据类型 变量名[ 长度 ];
数据类型:表示元素的数据类型
变量名:整个数组的变量名
[ ]:不能省略 – 长度:元素个数
长度必须是常量,即确定的具体数字。
例如:int num[10];
元素类型:int
元素个数:10
变量名:num – 整个数组的变量名
元素大小:4(字节)
数组的大小:元素大小元素个数
10
4 = 40

2.数组的特点:
1》存放相同类型的若干个元素
2》各个元素地址空间连续
3》数组名是数组的首地址,也是数组的首元素地址

数组取元素:
int num[6];
格式:变量名[下标];
下标:距离首元素的偏移量

3.数组的初始化(定义+赋初值)
1>完全初始化
int num[6] = {1,2,3,4,5,6};//依次赋值
注意:数组只有在定义的时候可以整体赋值,其他时候,必须是单元素赋值。

2>部分初始化
依次赋值,未赋值的部分,系统给0
int num[6] = {1,2,3};//依次赋值
pr:num[0] :1
pr:num[1] :2
pr:num[2] :3
pr:num[3],num[4],num[5] :0
常见:int num[6] = {0};
num[0] = 0//是我自己赋的值
num[1],num[2],num[3],num[4],num[5] :0//系统给的0;

3>只定义不赋值
–遵循全局变量和局部变量自身的原则
全局变量:
int num[6];
pr:num[0],num[1],num[2],num[3],num[4],num[5] :0//系统给的0
局部变量:
int num[6];
pr:num[0],num[1],num[2],num[3],num[4],num[5] :随机数
4>省略长度的初始化 – 一定是完全初始化
int num[] = {1,2,3,4,5,6};
sizeof(num) = 24;
长度:int len = sizeof(num)/sizeof(num [0]);

数组:
int num[10];//整型数组
float s[10];//浮点型数组
char buf[10];//字符型数组

4.冒泡排序:
每一轮,都从第一个位置开始比较,相邻两个元素比较,较小的往后放,较小的再与后面的比较。
1 3 2 6 7 8
3 1 2 6 7 8
3 2 1 6 7 8
3 2 6 1 7 8
3 2 6 7 1 8
3 2 6 7 8 1 6个数 第一轮 比较了5次
n个数 第i轮,比较n-i次

3 2 6 7 8 1
3 6 2 7 8 1
3 6 7 2 8 1 第二轮 比较了4次
3 6 7 8 2 1

6 3 7 8 2 1
6 7 3 8 2 1 第三轮 比较3次
6 7 8 3 2 1

7 6 8 3 2 1 第四轮 比较2次
7 8 6 3 2 1

8 7 6 3 2 1 第五轮 比较1次
规律:n个数,比较n-1轮
第i轮,比较n-i次
每次都是相邻两个元素作比较

5.二维数组
1》类型表达:
数据类型 变量名[行][列];
2》类型含义:
int num[3][4];

含义:二维数组的本质是一个一维数组,只不过,该一维数组的元素依旧是一个数组。
数组名:num

3》取元素:变量名[行下标][列下标]

4》类型大小:
数据类型 变量名[行][列]
数据类型
int num[3][4];
二维数组(num)的元素个数:3个
二维数组的单个元素(num[0])的元素个数:4个
num:int [3][4]
num[0]:int [4]
sizeof(num) = 48
sizeof(num[0]) = 16
求元素个数:
sizeof(num)/sizeof(num[0])

二维数组的初始化:
1》完全初始化:
。。。。都为0;

2》部分初始化
a》按行连续赋值:
int num[3][4] = {1,2,3,4,5,6};
num[0][0] = 1;num[0][1] = 2;num[0][2] = 3;
num[0][3] = 4;num[1][0] = 5;num[1][1] = 6;
其余都是0;

b》按行分段赋值:
int num[3][4] = {{1,2},{3,4},{5,6}};
num[0][0]=1;num[0][1] = 2;num[0][2] = 0;num[0][3] = 0;
num[1][0] = 3;num[1][1] = 4;num[1][2] = 0;num[1][3] = 0;
num[2][0] = 5;num[2][1] = 6;num[2][2] = 0;num[2][3] = 0;

3》只定义不赋值
全局:系统给0
局部:随机数

6 .地址偏移
int a=5;
&a+1 偏移4字节
a+1 空间中保存的数据运算

int a[3];
&a+1 偏移12字节
a+1 偏移4字节

int a[2][3];
&a+1 偏移24字节
a+1 偏移12字节
a[0]+1 偏移4字节

7.字符数组
存储单元 1字节
字符数组 1字节
字符串 连续性 “hello”
数组 地址连续

字符型数组定义:
char 数组名[元素个数];

字符型二维数组:
char buf[3][80];
二维数组(buf)的元素个数:3个
二维数组的单个元素(buf[0])的元素个数:80个

8.使用字符串处理函数:
1》puts 函数——输出字符串的函数,一般形式为:
puts(字符数组);例如:
char str[ ]={“hello “};
puts (str);
输出:hello
2》gets 函数——输入字符串的函数,一般形式为:
gets(字符数组);例如:
char a[20]={0};
gets(a);
printf(”%s”,a);

3》strcat 函数——字符串连接函数,一般形式为:
strcat(字符数组1,字符数组2);,例如:
char str1[20]=“ABC”;
char str2[20]=“12345”;
strcat(str1,str2) == “ABC12345”

4》 strcpy函数——字符串复制函数,一般形式为:
strcpy(字符数组1,字符数组2);,例如:
复制str2到str1中
char str1[10];//字符数组1,空间要足够大,可以容下字符数组2.
char str2[]=“china”;
strcpy(str1,str2);//返回值为复制得到的地址str1
输出结果:china\0\0\0\0\0

5》strcmp 函数——字符串比较函数,一般形式为:
strcmp(字符窜1,字符窜2);

6》strlen 函数——测字符串长度的函数,一般形式为:
strlen(字符数组);例如:
char str[10]=“china”;
printf(“%d”,strlen(str));
输出结果不是10,也不是6,而是5.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值