C语言字符串指针的用法(附带实例)

C语言字符串指针的用法(附带实例)

在 C语言中,没有专门的字符串变量,即没有 string 类型的变量,通常就用一个字符数组来存放一个字符串。

只有在定义字符数组时才能将整个字符串一次性地赋值给它,一旦定义完成,就只能通过数组一个字符一个字符地赋值,请看下面的例子:

char str[8] = "Hello";

str = "Hello"; //错误

str[0] = 'H'; str[1] = 'e'; str[2] = 'l'; //正确

【实例 1】通过 printf() 函数输出字符串。

#include

int main()

{

char string[] = "Hello!";

printf("%s\n",string); //用%s输出整个字符串

printf("%c\n",string[5]); //用%c输出字符数组的一个元素

return 0;

}

编译运行,结果如下:

Hello!

!

C语言字符串的结束标志

在 C语言中,字符串总是以 '\0' 作为结尾,所以 '\0' 也被称为字符串结束标志,或者字符串结束符。'\0' 是 ASCII 表中的第 0 个字符,英文为 NUL,中文为“空字符”。

字符 '\0' 既不能显示,又没有控制功能,输出该字符不会有任何效果,该字符在 C语言中唯一的作用就是作为字符串结束标志。

C语言在处理字符串时,会从前往后逐个扫描字符,一旦遇到 '\0' 就认为到达字符串的末尾,就会结束处理。'\0' 至关重要,没有 '\0' 意味着永远也到达不了字符串的末尾。双引号包围的字符串会自动在末尾添加 '\0'。

例如,“Hello!”从表面看起来只包含 6 个字符,但其实 C语言会在最后隐式地添加一个 '\0'。

图 1“Hello!”的存储

图 1 所示为“Hello!”在内存中的存储情形。在例 1 中,声明字符数组 string 时并未指定该数组的长度,但赋予了数组初始值,因此长度是固定的,长度为 7,其中,前 6 个分别存储字符串 “Hello!” 的每个字符,而最后一个存储 '\0'。

可以通过字符指针变量指向字符串,然后进行输出,通过下面的代码可以达到同样的效果:

char *string = "Hello!";

printf("%s\n",string); //用%s输出整个字符串

【实例 2】将一个字符串的内容复制到另外一个字符数组中。

将源字符串从第 0 个字符开始,一直到 '\0' 结束,一个字符一个字符地赋值给目标字符串,最后在目标字符串后面加上 '\0' 结束。代码如下:

#include

int main()

{

char str_a[ ] = "Hello!",str_b[20];

int i;

for(i = 0;*( str_a+i)!='\0';i++)

*( str_b+i) = *( str_a+i); //将 str_a[i]的值赋给str_b[i]

*( str_b+i) = '\0'; //在 str_b数组的有效字符之后加“\n”

printf("string a is:%s\n",str_a); //输出 str_a数组中的全部字符

printf("string b is:");

for(i=0;str_b[i]!='\0';i++)

printf("%c",str_b[i]); //逐个输出 str_b数组中的全部字符

printf("\n");

return 0;

}

运行结果为:

string a is:Hello!

string b is:Hello!

相关尊享内容

什么是疾病的传播途径?主要有哪些类型?
365bet开户网

什么是疾病的传播途径?主要有哪些类型?

📅 08-26 👑 815
XQC因使用R字在Valorant被禁
365bet亚洲官方网址

XQC因使用R字在Valorant被禁

📅 10-05 👑 670
自制超简单显微镜
365bet开户网

自制超简单显微镜

📅 09-02 👑 264