简介
字符数组的定义方式与一维数组、二维数组的定义方式类似,只不过数组的类型是char型。
例如:char s1[6];
定义了一个元素个数为6、数组名为S的字符数组,该字符数组中可以存放6个字符型数据。
例如:char s2[3][6];
定义了一个二维字符数组S,该数组可以存放3x6个字符型数据。
字符数组的初始化,即在声明的时候在后边直接赋值一个字符串。
如:char name[9]="xiaogang";
但是如果在声明语句以外的位置,就无法直接对整个数组直接赋值了,要把strcpy这个函数来实现。
而在这个字符数组中,包含了8个字符数据,即为八个元素,name[i]即为这个字符数组的元素名称,其中i可取0至8。1
字符数组名和数组元素名的区别例:
char ch[5]="abcd"其中,ch即为字符数组名,也代表了字符数组的首地址;而ch[0]、ch[1]等为字符‘a’,‘b’等的元素名。
字符数组进行字符数组的复制、连接、比较、求长操作时,都不能写数组的长度。即
void main(){ char name[100]={0}; scanf("%s",name); printf("%d\n",strlen(name)); 这里的name还是一个地址 //编译器遇到strlen这个函数就知道后边是字符串,//而name只是这个字符串的首地址,当它遇到所指向的地址为’\0’就停止计数。}进行字符数组的打印时,只需要给一个首地址,就从该地址所指向字符开始打印,直到所指向的字符为‘\0’。
而其它类型数组时,是不行的。例子:
字符数组
void main(){ char name[100]={0}; scanf("%s",name); printf("%s\n",&name); printf("%s\n",&name[2]); //表示从输入后第3个字符开始打印,通过字符数组元素名称取地址}其它类型数组
void main(){ int a[5]={0,1,2,3,4}; printf(a);}这里将无法打印,需要通过循环把数组的元素一一打印。字符数组的元素也可以通过这种元素名的方式进行循环打印。
void main(){ int a[5]={0,1,2,3,4}; int i=0; for(i=0;i