特点:同一数组中的所有元素都属于同一种数据类型(int,char,float)数组元素用数组名和相应的下标来确定。
方法:一个数组元素其实就是一个变量(可以称为带下标的变量)
类型名 数组名常量表达式
如:float s25;
定义数组有4个注意:
数组名下标
注:C语言中不能对数组进行整体引用只能单独饮用其中的元素。引用时下标可以是表达式。
char a10;
a0='A';
a3+7='b';
记住:数组元素的下标值在(0~N-1之间)
格式: 类型名 数组名常量表达式={初值1,初值2,...}
注意:
类型名 数组名 常量表达式1
如:
int a10;
char b3;
float s7;
注:
数组名 行下标
注:
方法1:将初值依序放在一对{ }中,与一维数组初始化格式相同
例如:int a2={1,2,3,4,5,6};
方法2:定义二维数组同时,按行初始化每一行初值均用一对{}括起,采用嵌套的{}格式.
例如:int a2={{1,2,3},{4,5,6}};
注意:定义二维数组的同时给数组初始化,则可以省略行数,但列数不能省略.
例如:
int a={1,2,3,4,5,6} 没问题
int a2={1,2,3,4,5,6} 非法
int a; 非法,必须得有数据
引子:c语言中没有字符串变量,那么如何存储字符串?
方法1:字符数组来存放
方法2:字符型指针变量
char s[]={'a','b','c','d','e'};
与其他类型数组初始化方式一样,只是其初始值是字符.
字符串:
因为字符串最后都有一个字符串结束符'\0',所以用字符数组存放字符串时一定要有一个元素存放结束符'\0'
方法1:
scanf();键盘输入
char a10; scanf("%s",a); 合法 scanf("%s",&a); 非法
数组头就是数组的首地址,不用加上取地址符
用%s格式输入时,==遇到空格符或回车符==则自动结束输入
printf();键盘输出
注意:输出时则从当前地址开始直到遇到结束符'\0'为止
方法2:
gets()键盘输入
格式:
#include<stdio.h>
gets(字符数组)
功能:读取一个字符串赋给字符数组
注:
(1)用该函数输入字符时,只有遇到==回车符==系统才结束读取
(2)不论是用%s,还是gets()在输入时均不需要输入双引号,若输入用了双引号则双引号也作为字符串的有效字符
puts( )输出
格式:
#include<stdio.h>
puts(字符数组或字符串常量)
功能:在屏幕上输出字符数组中的字符.
注:用该函数输出与用%s格式输出一样,只是将=='\0'转成'\n'输出==
方法3:
字符串初始化
char s[]=''abcd'';
char s[]={"abcd"};
char s[]={'a','b','c','d','\0'};
方法4:
字符串函数
格式:#include<string.h>
strcat(字符数组1,字符数组2);
将字符数组1后连接字符数组2,字符数组2不发生变化
功能:"连接"
例如:
char a[18]="jack";
char b[18]="zhy";
strcat(a,b);
a是jackzhy,b是zhy
格式:
#include<string.h>
strcpy(字符数组1,字符数组2)
功能:将字符数组2中的字符串替换到字符数组1中.函数值应为字符数组1的首地址
会直接把字符数组2包括\0,覆盖到字符数组1上
strcmp(字符数组1,字符数组2)
功能:函数返回值相同位置不同字符的ASII码差值
从左往右,一个字符一个字符比较
strcmp("abc","abc") 差值是0
strcmp("abc","abfc") 差值是-3
strcmp("abc","ab") 差值是99
注意:不能用关系运算符比较字符串
功能:求出字符数组的实际长度(不包括结束符)
注意:\0是结束符,但是\1可不是,\后面可以接一个8进制数
char a[]="abc\018\0" strlen()=5, \01是一个 8肯定不是8进制
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。