gpt4 book ai didi

c - 直接指向 C 中的文本不是不可能吗?

转载 作者:太空宇宙 更新时间:2023-11-04 05:49:06 25 4
gpt4 key购买 nike

我正在学习 C,我遇到了指针。尽管我从本教程中学到的知识比从教科书中学到的更多,但我仍然对字符指针感到疑惑。

如果我编程这个

#include <stdio.h>

int main()
{
char *ptr_str;

ptr_str = "Hello World";

printf(ptr_str);

return 0;

}

结果是

Hello World

我不明白编译时怎么没有错误,因为指针 ptr_str 直接指向文本而不是文本的第一个字符。我以为只有这个行得通

#include <stdio.h>

int main()
{
char *ptr_str;
char var_str[] = "Hello World";

ptr_str = var_str;

printf(ptr_str);

return 0;

}

那么在第一个例子中我是如何直接指向文本的呢?

最佳答案

您的代码有效,因为字符串文字本质上是静态数组。

ptr_str = "Hello World";

被编译器当作是

static char __tmp_0[] = {'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', '\0' };
ptr_str = __tmp_0;

(除非尝试修改字符串文字的内容具有未定义的行为)。

您甚至可以将 sizeof 应用于字符串文字,您将获得数组的大小:例如,sizeof "Hello" 为 6。

关于c - 直接指向 C 中的文本不是不可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48892704/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com