小编Dan*_*708的帖子

C 中的字符串数组在内存中的样子如何?

我试图弄清楚 2d char 数组在内存中的样子。例如:

    char   c[][5]={"xa","ccc","bb","j","a","d"};

    printf("TEST: %u %u %u %u \n\n",c[0],*c[0],c[0]+1,*(c[0]+1));
Run Code Online (Sandbox Code Playgroud)

输出:

测试:3214246874 120 3214246875 97

c[0]=*(c+0) 是字符串“xa”,等于 3214246874,所以我猜 c[0] 是字符数组“xa”的地址。当我将 * 放入 c[0] 时,我得到 120,即 ascii 中的“x”。

所以我认为 c 数组中的第一个空格是字符 x 的地址。之后,我用 c[0]+1 尝试了同样的方法,它打印了下一个地址,然后我输入了 *,我得到了 ,97,它是 ASCII 中的“a”。

所以我假设数组 c 看起来像这样:

c[0]                              c[1]
------------------------------------------------------------------
| pointer to x | pointer to a ||| pointer to c | pointer to c | etc ...
----------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

但是我在网上搜索并没有找到任何证据来证明我的假设。

c arrays

6
推荐指数
1
解决办法
829
查看次数

标签 统计

arrays ×1

c ×1