C语言字符串常量
  TEZNKK3IfmPf 2023年11月14日 24 0

一.字符串常量的声明

char *p = "hello";//指针直接往上戳

一个字符串常量为什么会给一个指针赋值? 字符串常量是一个表达式,既然使表达式就会有值,字符串常量的值是该字符串第一个字母的首地址

同一个字符串常量,它们的值(地址)相同

  #include <stdio.h>


int main(void){



char *p =
"hello";


char *q =
"hello";


printf(
"%p\n%p", p, q);




return
0;

C语言字符串常量

注意,上面的例子中使用了不同的指针指向同样内容的字符串常量,输出的结果却一样,这就说明多次使用同样内容的字符串常量,在内存中,都只保存一次该字符串常量。

结论:字符串本身是有值的,就是第一个字符的地址。

因为它的值是地址,所以可以这样用


#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;

C语言字符串常量

二.注意事项

1.字符串常量和字符数组不同,无法通过下标(指针间接引用)来直接修改
2.如果要修改字符串的值,我们只能使用字符数组的形式来存储字符串,可以这样声明:char str[] = "hello";,这样就可以修改了,它两本质上的不同是存储的位置不同。

 

 

C语言字符串常量

一.字符串常量的声明

char *p = "hello";//指针直接往上戳

一个字符串常量为什么会给一个指针赋值? 字符串常量是一个表达式,既然使表达式就会有值,字符串常量的值是该字符串第一个字母的首地址

同一个字符串常量,它们的值(地址)相同

    #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;

C语言字符串常量

注意,上面的例子中使用了不同的指针指向同样内容的字符串常量,输出的结果却一样,这就说明多次使用同样内容的字符串常量,在内存中,都只保存一次该字符串常量。

结论:字符串本身是有值的,就是第一个字符的地址。

因为它的值是地址,所以可以这样用

    #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;

C语言字符串常量

二.注意事项

1.字符串常量和字符数组不同,无法通过下标(指针间接引用)来直接修改
2.如果要修改字符串的值,我们只能使用字符数组的形式来存储字符串,可以这样声明:char str[] = "hello";,这样就可以修改了,它两本质上的不同是存储的位置不同。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月14日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   2024年04月19日   54   0   0 进程c语言
  TEZNKK3IfmPf   2024年05月17日   32   0   0 字符串php
TEZNKK3IfmPf