C语言字符串指针(指向字符串的指针)详解
C语言中没有特定的字符串类型,我们通常是将字符串放在一个字符数组中,这在《C语言字符数组和字符串》中已经进行了详细讲解,这里不妨再来演示一下:
#include <stdio.h>
#include <string.h>
int main(){
char str[] = "http://c.biancheng网站站点" rel="nofollow" />
#include <stdio.h>
#include <string.h>
int main(){
char str[] = "http://c.biancheng网站站点" rel="nofollow" />
char *str = "http://c.biancheng网站站点" rel="nofollow" />
char *str;
str = "http://c.biancheng网站站点" rel="nofollow" />
运行结果:#include <stdio.h>
#include <string.h>
int main(){
char *str = "http://c.biancheng网站站点" rel="nofollow" />
这段代码能够正常编译和链接,但在运行时会出现段错误(Segment Fault)或者写入位置错误。有!它们最根本的区别是在内存中的存储区域不一样,字符数组存储在全局数据区或栈区,第二种形式的字符串存储在常量区。全局数据区和栈区的字符串(也包括其他数据)有读取和写入的权限,而常量区的字符串(也包括其他数据)只有读取权限,没有写入权限。
内存权限的不同导致的一个明显结果就是,字符数组在定义后可以读取和修改每个字符,而对于第二种形式的字符串,一旦被定义后就只能读取不能修改,任何对它的赋值都是错误的。
我们将第二种形式的字符串称为字符串常量,意思很明显,常量只能读取不能写入。请看下面的演示:#include <stdio.h>
int main(){
char *str = "Hello World!";
str = "I love C!"; //正确
str[3] = 'P'; //错误
return 0;
}
第4行代码是正确的,可以更改指针变量本身的指向;第5行代码是错误的,不能修改字符串中的字符。
到底使用字符数组还是字符串常量
在编程过程中如果只涉及到对字符串的读取,那么字符数组和字符串常量都能够满足要求;如果有写入(修改)操作,那么只能使用字符数组,不能使用字符串常量。获取用户输入的字符串就是一个典型的写入操作,只能使用字符数组,不能使用字符串常量,请看下面的代码:
#include <stdio.h>
int main(){
char str[30];
gets(str);
printf("%s\n", str);
return 0;
}
C C++ Java Python JavaScript
C C++ Java Python JavaScript
我们来总结一下,C语言有两种表示字符串的方法,一种是字符数组,另一种是字符串常量,它们在内存中的存储位置不同,使得字符数组可以读取和修改,而字符串常量只能读取不能修改。
- 随机文章
- 马尔代夫鲸鱼餐厅(马尔代夫开设全球首家鲸鱼主题餐厅)
- 马尔代夫抒情曲(马尔代夫,浪漫情歌)
- 中东马尔代夫事件(中东国家针对马尔代夫的事件引发关注)
- 全家出发马尔代夫(全家出游必去之地:马尔代夫度假胜地)
- 马尔代夫鲨鱼别墅(马尔代夫水上酒店推出鲨鱼主题别墅)
- 到马尔代夫七天游(七日梦境之旅:探索马尔代夫美丽海洋)
- 宁德的小马尔代夫(宁德打造的美丽海岛,堪比小马尔代夫)
- 国足热身马尔代夫(国足在马尔代夫热身备战,迎战阿曼队)
- 无锡顾山马尔代夫(无锡顾山打造仿佛马尔代夫的度假胜地)
- 嘉祥 马尔代夫(嘉祥集团洽谈马尔代夫发展计划)
- 马尔代夫龙虾玩法(玩转马尔代夫龙虾:独特的美食行程)
- 南昌马尔代夫自驾(自驾游南昌和马尔代夫:探索两地风情)
- 海岛天堂马尔代夫(美丽的马尔代夫:一个美丽的海岛天堂)
- 澳门转机马尔代夫(从澳门中转前往马尔代夫,顺畅旅行!)
- 潍坊山东马尔代夫(浪漫马尔代夫来到潍坊,感受异国风情)
- 港版马尔代夫视频(这是什么?香港版马尔代夫的旅行视频)
- 林州马尔代夫旅游(林州的马尔代夫之旅,海岛度假好去处)
- 潍坊马尔代夫路线(潍坊启运赴马尔代夫海岛旅行畅游之旅)
- 长岛马尔代夫图片(美不胜收!长岛马尔代夫惊艳图片盛放)
- 海南马尔代夫国家(海南旅游打造类似马尔代夫的度假胜地)
- 水飞 马尔代夫(马尔代夫这个度假胜地有什么好玩的?)
- 时尚阿姨马尔代夫(时尚阿姨探访马尔代夫:海底世界游记)
- 郑州马尔代夫简介(被誉为中原明珠的郑州有个马尔代夫!)
- 露露小微马尔代夫(露露小微马尔代夫之行,畅游蓝天白沙)
- 马尔代夫位于地图(探秘马尔代夫:印度洋珍宝的美丽家园)
- 山东昌邑马尔代夫(昌邑市一沉浸式马尔代夫主题乐园在建)
- 马尔代夫事件女主(马尔代夫事件女主受到死亡威胁后获释)
- 马尔代夫亲民度假(马尔代夫推出平价旅游,让度假更亲民)
- 马尔代夫入住心得(马尔代夫酒店住宿心得,别致别具特色)
- 门口就是马尔代夫(马尔代夫近在咫尺,轻松游览了解风情)
