C语言数组-创新互联
文章目录
当前名称:C语言数组-创新互联
网站网址:http://scyingshan.cn/article/digdhe.html
- 一维数组
- 二维数组
- 字符数组
- 字符串
- 定义:
类型符 数组名[常量表达式];
- 定义数组时,要指定数组中元素的个数
- 常量表达式中可以包括
常量
和符号常量
,不能包含变量,也就是说,C语言不允许对数组的大小作动态定义,即数组的大小不依赖于程序运行过程中变量的值。
int a[3+5]; //合法
int n;
scanf("%d",&n);
int a[n]; //不合法
- 引用数组:在定义数组并对其中各元素赋值后,就可以引用数组中的元素。只能引用数组元素而不能一次整体调用整个数组全部元素的值。
#includeint main(){int nums[10];
for(int i=0;i<10;i++){scanf("%d",&nums[i]);
}
return 0;
}
- 一维数组的初始化
- 在定义数组时,指定数组的长度并对之初始化,凡未被“初始化列表”指定初始化的数组元素,系统自动把他们初始化为
0 NULL '\0'
- 在定义数组时,指定数组的长度并对之初始化,凡未被“初始化列表”指定初始化的数组元素,系统自动把他们初始化为
//1、定义数组时,对全部数组元素赋初值。
int a[10]={0,1,2,3,4,5,6,7,8,9};
//2、只给数组中部分元素赋值,系统自动给剩余元素赋初值为0.
int a[10]={0,1,2,3,4};
//3、在对数组赋初值时,由于数据个数已经确定,因此可以不指定数组长度。
int a[5]={1,2,3,4,5};
可以写成
int a[]={1,2,3,4,5};
二维数组- 定义:
数组名 [常量表达式][常量表达式];
- 二维数组可被看作特殊的一维数组,它的元素又是一个一维数组。
- 在内存中,各元素是连续存放的,不是二维的,是线性的,按行存放。
- 引用二维数组
int a[3][4];//行下标范围[0,2] 列下标范围[0,3];
a[3][4]=3;//错误,不存在a[3][4]元素
- 初始化二维数组
1、分行给二维数组赋初值
int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
2、将数据都写在一个括号内,按数组元素在内存中的排列顺序对各元素赋初值
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
3、可以对部分元素赋初值
int a[3][4]={{1},{2},{3}};
等价于->int a[3][4]={{1,0,0,0},{2,0,0,0},{3,0,0,0}};
int a[3][4]={{1},{2},{}};
等价于->int a[3][4]={{1,0,0,0},{2,0,0,0},{0,0,0,0}};
4、如果对全部元素赋初值,则定义数组时对第一维长度可以不指定,但第二维长度必须指定。
int a[][4]={1,2,3,4,5,6,7,8,9,10,11,12};
5、在定义时,也可以只对部分元素赋初值而省略第一维的长度,但应分行赋值。
int a[][4]={{0,0,3},{},{0,10}};//编译系统判断数组有3行4列
字符数组- 定义:用来存放字符数据的数组是字符数组。在字符数组中的一个元素内存放一个字符。
- 由于字符型数据是以字符的ASCII码存储在存储单元的,一般占一个字节,因此也可以用整型数组来存放字符数据,但会浪费存储空间。
int c[10];
c[0]='a';//合法
- 初始化字符数组
char c[10]={'a','b','c'};//其余未初始化的元素值为空字符('\0')
- 引用字符数组
int main(){char c[10]={'I',' ','a','m','a','g','i','r','l','!'};
for(int i=0;i<10;i++){printf("%c",c[i]);
}
printf("\n");
return 0;
}
字符串定义:在
C
语言中,将字符串作为字符数组来处理,字符串中的字符是逐个存放在字符数组元素中的。字符串结束标志:空字符
'\0'
- 字符串以字符
'\0'
作为结束标志。如果字符数组中存在若干字符,前面9个字符都不是空字符,而第10个字符是空字符,则认为数组中有一个字符串,其有效字符为9个。也就是说,在遇到空字符时,表示字符串结束,把它前面的字符组成一个字符串。 - C系统在用字符数组存储字符串常量时,会自动加一个空字符作为结束符。例:
"C program"
共有9个字符。字符串是存放在一维数组中的,在数组中它占10个字节,最后一个空字符是系统自动加上的。 - 字符数组并不要求它的最后一个字符为
'\0'
,可以不包含空字符。 - 有了结束符后,字符数组的长度就不重要了,可以省略。程序中往往靠检测空字符的位置来判断字符串是否结束,而不是依靠数组长度来决定字符串长度。
- 字符串以字符
初始化字符串
1、用字符串常量来初始化字符数组
char c[]={"I am happy!"};
char c[]="I am happy!";
等价于->char c[]={'I',' ','a','m','','h','a','p','p','y','\0'};
不等价于->char c[]={'I',' ','a','m','','h','a','p','p','y'};
- 字符数组的输入输出
- 单个字符输入输出
%c
- 将整个字符串一次输入或输出
%s
- 单个字符输入输出
char c[]={"China"};
scanf("%s",c);
printf("%s\n",c);//输出的字符串不包括空字符
//利用一个scanf函数输入多个字符串,则应在输入时以空格分隔,系统把空格字符作为输入的字符串之间的分隔符
char str1[4],str2[5],str3[6];
scanf("%s%s%s",str1,str2,str3);
输入数据:How are you?
- 字符串处理函数(使用时要包含头文件
#include
)puts
函数——输出字符串puts(字符数组名);
gets
函数——输入字符串,并且得到一个函数值,该函数值是字符数组的起始地址。gets(字符数组名);
puts
和gets
只能输出输入一个字符串- getchar函数——输入单个字符,函数返回值是输入的那个字符
char ch=getchar();
- putchar函数——输出字符
putchar(ch);
strcat
函数——字符串连接函数,结果放在字符数组1中,连接时,系统自动将字符数组1中的空字符取消,得到字符数组1的地址。strcat(字符数组1,字符数组2);
strcpy
函数——字符串复制函数,将字符串2复制到字符数组1中去。字符数组1必须是数组名形式,字符串2可以是数组名,也可以是字符串常量。strcpy(字符数组1,字符串2);
- 不允许用赋值语句将一个字符串常量或字符数组直接给一个字符数组。字符数组名是一个地址常量,它不能改变值。
strncpy
函数——将字符串2前面的n个字符复制到字符数组1中去。strncpy(字符数组1,字符串2,n);
- strcmp函数——字符串比较函数,若字符串相同,函数值为0;若字符串1>字符串2,函数值为一个正整数。
strcmp(字符串1,字符串2);
strlen
函数——测字符串长度的函数,函数值为字符串实际长度,不包含空字符。也可以直接测字符串常量的长度。strlen(字符数组);
- strlwr函数——转换为小写的函数
strlwr(字符串);
- strupr函数——转换为大写的函数
strupr(字符串);
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
当前名称:C语言数组-创新互联
网站网址:http://scyingshan.cn/article/digdhe.html