通过指针引用字符串可以更加方便灵活的使用字符串。
字符串的引用方式有两种,下面简单介绍一下这两种方法。
1.用字符数组来存放一个字符串。
1.1
可以通过数组名和下标来引用字符串中的一个字符。
1.2
还可以通过数组名和格式声明符%s输出整个字符串。
具体实现代码如下:
代码语言:javascript复制#include <stdio.h>
int main()
{
char ch[] = "xuejiejie";
printf("%sn", ch); //输出整个数组
printf("%cn", ch[1]); //输出第2个字符
return 0;
}
结果:
代码语言:javascript复制xuejiejie
u
D:VSProject4x64DebugProject4.exe (进程 17608)已退出,代码为 0。
按任意键关闭此窗口. . .
2.用字符指针变量引用字符串常量。
先来举个例子:
代码语言:javascript复制#include <stdio.h>
int main()
{
const char* string = "xuejiejie";
printf("%sn",string);
return 0;
}
结果:
代码语言:javascript复制xuejiejie
D:VSProject4x64DebugProject4.exe (进程 17916)已退出,代码为 0。
按任意键关闭此窗口. . .
分析:
在c语言中对字符串常量是按照字符数组来处理,所以首先在内存中开辟一个连续字符数组来存放该字符串常量。
但是通过上面的代码我们可以发现字符串是没有数组名的,所以只能通过指针变量来引用。
其实在对指针进行赋值时,只是把字符串中的第一个字符的地址(首元素地址)赋值给指针变量。
对上面string而言就是把“x”的地址赋值给string。(注意不是把整个xuejiejie赋值给string)
错误示范:
代码语言:javascript复制 const char* string = "xuejiejie";
*string = "xuejiejie";
注意:当对一个数值型的数组时只用数组名是不能输出整个数组的,只能一个一个输出。
对于字符串的存取,可以采用下标法,指针法和指针变量法。
如下所示:
代码语言:javascript复制#include <stdio.h>
#include <string.h>
int main()
{
char a[] = "xuejiejie";
//下标法
for (int i = 0; i < strlen(a); i )
{
printf("%c", a[i]);
}
printf("n");
//指针变量
char* ch;
ch = a;
printf("%sn", ch);
for (; *ch != '