C语言——字符数组/字符串/字符指针变量

 2024-03-05 00:09:21  阅读 0

我从谭浩强的书中学到了一切,并在以后阅读其他书籍时进行补充和完善。

字符串是存储在字符数组中的字符串。 一、定义

字符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. 概念

字符指针变量的值可以改变,但它指向的字符常量不能改变。

字符数组的数组名不能更改,但字符数组中每个元素的值可以更改。

标签: 字符 数组 变量

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码