我从谭浩强的书中学到了一切,并在以后阅读其他书籍时进行补充和完善。
字符c[10];
2.初始化
char c[10]={'C','h','i','n','a'};
//如果初始值的个数小于数组长度,则剩余元素自动设置为空字符'\0'
char c[]={'C','h','i','n','a'};
//数组长度为5
char c[10]={"中国"};
//前5个元素是中国,第6个元素是'\0',其余4个元素是'\0'
char c[]={"中国"};
//此时数组c的长度为6,系统在字符串常量末尾添加空字符'\0'。
3、字符数组的输入输出
①逐字符输入输出
("%c",c[0]);
scanf(“%c”,c[0]);
②一次输入或输出字符串
(“%s”,c);
//如果scanf中输入项是字符数组名,则不加地址字符&
scanf(“%s”,c);
//例如输入:China,系统会自动在China后面添加'\0'。
scanf(“%s%s%s”,str1,str2,str3);
//例如输入How are you? 空格作为分隔符相当于 How\0are\0you?\0
4.字符串处理函数
1.puts(字符数组)
功能:向终端输出一个字符串(以'\0'结尾的字符序列)
看跌期权(c);
2.gets(字符数组)
功能:从终端输入一个字符串到字符数组中
获取(c);
//最后添加'\0'
3.(字符数组1、字符数组2)
功能:将字符串2连接到字符串1的末尾,并将结果放入字符串1
(str1,str2);
//字符数组1必须足够大才能容纳连接后的新字符串
//连接时取消字符串1后面的'\0',只保留新字符串末尾的“'\0'
4.(字符数组1,字符串2)
功能:将字符串2复制到字符数组1
//如果str1数组在复制前没有初始化或复制,那么str1字节的内容是不可预测的。 复制时,将str2字符串和后面的'\0'复制到str1中,替换str1。 str1中的前6个字符和后4个字符不一定是'\0',而是str1中原来的后4个字节。
//该函数将一个字符串复制到另一个字符数组中,并使用赋值语句智能地将一个字符赋给字符变量或字符数组元素。
//可以使用()将字符串2中的前n个字符复制到字符数组1中(str1, str2, 2);
5.(字符串1,字符串2)
功能:比较字符串1和字符串2
// 如果全部相同,则认为两个字符串相等。
//如有差异,以第一个不同字符的比较结果为准。
5. 如何引用字符串
①使用数组名和下标,如c[4],或者使用数组名和格式语句如“%s”输出字符串
②使用字符指针变量指向字符串常量,通过字符指针变量引用字符串
字符指针变量
*p,p为地址,*取p地址中的变量
&p,p是变量,&取p变量的地址
一、定义
字符*;
2.初始化
char * s=“我爱中国!”;
相当于
char * s;//定义一个char *类型变量
s="I love China!";//将字符串第一个元素的地址赋值给字符指针变量s
//s是指针变量,基本类型是字符。 s只能指向一个字符数据,不能指向多个字符数据。
3. 访问字符串中的字符
①下标法
char a[]=“我爱中国!”;
*(a+2)//a为首地址 *(a+2)相当于a[2]
②指针变量法
char a[]=“我爱中国!”;
字符*p;
p=a;
//用*p表示
p++;
字符指针变量与字符数组的比较 1.初始化
指针变量的初始化:
char * s=“我爱中国!”;
相当于
字符*;
s=“我爱中国!”;
字符数组的初始化:
char c[20]=“我爱中国!”;
不等于
字符c;
c[]=“我爱中国!”;
//定义字符数组时,可以给所有元素赋值初始值,但定义后不能使用赋值语句给字符数组的所有元素赋值。
2. 存储单元内容
在编译过程中,为字符数组分配了多个存储单元来存储每个元素的值。 只为字符指针变量分配一个存储单元。
3. 概念
字符指针变量的值可以改变,但它指向的字符常量不能改变。
字符数组的数组名不能更改,但字符数组中每个元素的值可以更改。