前言:
当前兄弟们对“c语言指针读取字符串”大致比较注意,同学们都需要了解一些“c语言指针读取字符串”的相关资讯。那么小编同时在网摘上网罗了一些有关“c语言指针读取字符串””的相关资讯,希望姐妹们能喜欢,我们快快来学习一下吧!1 指针操作字符串
在学习数组的时候,我们了解了字符串的定义,我们可以定义一个字符数组,用来存放一个字符串,例如:
char array[] = {"abcde"};
char buf[]={"韦凯峰 Linux C/C++ 零基础编程教程!\n"};
char buf1[]={"Linux系统编程\nOpenwrt系统开发\n\n"};
char tmp[]={"xxx\n"};
那么,学习了指针,我们可以定义一个char类型的字符指针变量,字符指针变量存放字符串的地址,那么,字符指针变量指向字符的地址。例如:
可以看到,定义了字符指针变量pstr,并且把 array[] 数组的首地址赋给该指针变量,然后,输出pstr指针变量指向的字符串。
也可以把一个字符串常量,赋给字符串指针。程序测试代码如下:
可以看到,我们定义了char类型的指针变量,然后,可以直接把字符串常量赋给字符指针变量。那么,字符指针变量就存放字符串常量的首地址。
所以,可以输出字符指针变量指向的字符串常量。
2 字符串常量操作异常
在定义字符串的时候,有如下的形式:
char array[] = "abcde";
定义了字符数组array[ ],存放字符串数据。如下的形式,是定义一个指针,直接指向一个字符串:
char* p1 = "www123"; //把字符串常量赋给指针变量p1
定义字符串指针p1,指向字符串常量。
那么,array[ ]字符数组中存放的数据是普通的字符数据,可以修改。但是,字符指针p1指向的地址,是存放“字符串常量”,是不允许修改。
程序测试例子如下:
程序运行结果如下:
可以看到,执行 array[3] = 'A' 是正确的操作。但是,执行 p1[3] = 'A'的时候,就提示了Segmentation fault错误,是内存段错误。
因为,字符串指针p1指向的是字符串常量,字符串常量中的字符是常量,不可以被修改。
标签: #c语言指针读取字符串 #用指针读取字符串