C语言字符串常量
C语言字符串常量
一.字符串常量的声明
char *p = "hello";//指针直接往上戳
一个字符串常量为什么会给一个指针赋值? 字符串常量是一个表达式,既然使表达式就会有值,字符串常量的值是该字符串第一个字母的首地址
同一个字符串常量,它们的值(地址)相同
-
#include <stdio.h>
-
-
int main(void){
-
-
char *p =
"hello";
-
char *q =
"hello";
-
-
printf(
"%p\n%p", p, q);
-
-
return
0;
-
}
注意,上面的例子中使用了不同的指针指向同样内容的字符串常量,输出的结果却一样,这就说明多次使用同样内容的字符串常量,在内存中,都只保存一次该字符串常量。
结论:字符串本身是有值的,就是第一个字符的地址。
因为它的值是地址,所以可以这样用
-
#include <stdio.h>
-
-
int main(void){
-
-
-
printf(
"%p\n",
"hello");
-
printf(
"%p\n",
"hello" +
1);
-
printf(
"%c\n", *(
"hello" +
1));
-
printf(
"%c\n",
"hello"[
1]);
-
-
return
0;
-
}
二.注意事项
1.字符串常量和字符数组不同,无法通过下标(指针间接引用)来直接修改。
2.如果要修改字符串的值,我们只能使用字符数组的形式来存储字符串,可以这样声明:char str[] = "hello";,这样就可以修改了,它两本质上的不同是存储的位置不同。
本文作者:TwcatL_tree
本文链接:https://www.cnblogs.com/twcat/p/16912512.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步