C语言基础之数组

来源:互联网 发布:小阴唇肥大 知乎 编辑:程序博客网 时间:2024/05/16 08:42

一、基本概念
数组是用来存储多个类型相同的数据的数据结构——容器。
1、多个,类型相同。
2、数组是一段连续的内存区域。
3、数组变量的本质就是其首字节的地址。
4、数组是数据的容器,而非数据本身。
5、数组中的每个数据项被称为数组的元素,一个数组包括一到多个元素。数组中元素的个数被称为数组的长度。
6、数组下标就是元素在数组中的索引号,从0开始。
7、数组元素通过数组名和下标的组合进行访问,[]叫做下标运算符:数组名[下标],表示数组中第“下标”个元素。

二、数组的定义
元素类型 数组名[长度(元素个数)]={初始化表};
int arr[10];//0-9
arr是个数组,其中包含10个元素,每个元素都是int类型的。
类型定义:从近到远,由右向左,括号优先。
arr[0]=100;//将100赋值给arr数组的第0个元素。
printf(“%d”,arr[8]);//打印arr数组的第8个元素。
有效元素:arr[0],arr[1],…arr[9]
printf(“%d”,arr[10]);//越界
arr[10]=100;//可能引发错误
arr[12]=200;//可能引发错误
arr[i]是数组元素,i是数组元素的下标,从0到数组的长度-1。超出此范围,将导致段错误或者覆盖其他变量。

三、一维数组的使用
1、数组的初始化
int arr[10]={1,2,3,4,5,6,7,8,9,10};
依次取初始化表中的值对数组中的每个元素进行初始化。
int arr[10]={1,2,3}
初始化没有显示指明初始值的元素,一律初始化为零。
int arr[10]={0};//全部初始化为0
int arr[10]={};//全部初始化为0
int arr[10];不做初始化
如果在定义数组时不指定长度,则取初始化表的长度作为数组的长度。
int arr[]={1,2,3,4,5};//等价于int arr[5]={1,2,3,4,5};
int arr[];//错误
计算数组长度:sizeof(arr)/sizeof(arr[0])

四、二维数组的初始化
1、分行给二维数组赋初值
eg:int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
2、可以将所有数据写在一个花括号内,按数组元素在内存中的排列顺序对各元素赋初值。
eg:int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
3、可以对部分元素赋初值
eg:int a[3][4]={{1},{5},{9}};
其作用是只对各行第一列(即序号为0的列)的元素赋初值,其余元素自动为0。
也可以对各行中的某一元素赋初值
eg:int a[3][4]={{1},{0,6},{0,0,11};
4、如果全部元素都赋初值(即提供全部初始数据),即定义数组时对第一维的长度可以省略,但第二维的长度不能省略。
eg:int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
可以写成int a[][4]={1,2,3,4,5,6,7,8,9,10,11,12};
不可以写成int a[3][]={1,2,3,4,5,6,7,8,9,10,11,12};//error

五、字符数组
1、定义:用来存放字符数据的数组是字符数组。
2、字符数组的初始化
数组长度可以自动省略
eg:char c[]={‘I’,”,’a’,’m’,”,’h’,’a’,’p’,’p’,’y’};
3、字符数组的输入输出
(1)逐个字符输入输出,用格式符“%c”输入或者输出一个字符。
(2)将整个字符串一次输入或者输出,用”%s”格式符,意思是对字符串(string)的输入输出。
eg:char c[]={“China”};
printf(“%s\n”,c);
(1)函数的返回类型不能为一个数组类型。
(2)局部数组,具有局部作用域,函数调用结束之后,数组也就被操作系统摧毁了。

将一个二维数组的行和列互换#include<stdio.h>int main(){int a[2][3]={{1,2,3},{4,5,6}};int b[3][2],i,j;printf("arr a:\n");for(i=0;i<=1;i++)//处理a数组中的一行各元素{for(j=0;j<=2;j++)//处理a数组中某一列元素{printf("%5d",a[i][j]);//输出a数组中各元素b[j][i]=a[i][j];}printf("\n");}printf("arr b:\n");//输出b数组各元素for(i=0;i<=2;i++){for(j=0;j<=1;j++){printf("%5d",b[i][j]);}printf("\n");}return 0;}
输出一个已知的字符串#include<stdio.h>int main(){char a[15]={'I','','a','m','','a','','s','t','u','d','e','n','t','.'};int i;for(i=0;i<15;i++){printf("%c",c[i]);}printf("\n");return 0;}
原创粉丝点击