gpt4 book ai didi

c++ - 在连续的内存位置存储字符串文字

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:09:52 26 4
gpt4 key购买 nike

    #include <stdio.h>
#include <string.h>
int main() {

char *s[] = {"cricket","tennis","football"};

printf(" String are: \n\n");
printf(" %s \n", *(s));
printf(" %s \n", *(s+1));
printf(" %s \n", *(s+2));
printf(" \n\n");

printf(" Starting locations of the string are: \n\n");

printf(" %d\n",*(s));
printf(" %d\n",*(s+1));
printf(" %d\n",*(s+2));
printf(" \n\n");

return 0;
}

输出:

String are: 

cricket
tennis
football


Starting locations of the string are:

134514112
134514120
134514127

s 是一个字符指针数组。 s 有三个元素,每个元素都存储字符串文字的起始地址。即s[0]是一个指针,指向“蟋蟀”的起始地址。等..

我的问题是:

通过观察这些地址,我们可以看到第二个字符串存储在第一个字符串的空字符之后。所有三个字符串都以顺序形式存储。这总是正确的吗?

最佳答案

这是一个链接器决定 - 是否紧密存储字符串文字。没有任何保证。或者甚至这可能由编译器完成——它可能会创建包含所有相关文字的连续数据部分。但是尽管如此,该部分的实际布局仍然是特定于实现的,您不应该对此做出任何假设。

关于c++ - 在连续的内存位置存储字符串文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38997119/

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