gpt4 book ai didi

c - 在字符指针数组的情况下, 'array name' 是什么意思?

转载 作者:太空狗 更新时间:2023-10-29 16:25:26 25 4
gpt4 key购买 nike

在我的代码中:

 char *str[] = {"forgs", "do", "not", "die"};
printf("%d %d", sizeof(str), sizeof(str[0]));

我得到的输出为 12 2 ,所以我的疑问是:
  • 为什么有区别?
  • 两者 strstr[0]是字符指针,对吗?
  • 最佳答案

    在大多数情况下,数组名称将衰减为其第一个元素的地址值,并且类型与指向元素类型的指针相同。所以,你会期望一个裸露的 str具有等于​​ &str[0] 的值类型指针指向 char .

    但是,对于 sizeof 而言,情况并非如此。 .在这种情况下,数组名称保持其类型为 sizeof ,这将是指向 char 的 4 个指针的数组.
    sizeof的返回类型是 size_t .如果你有 C99 编译器,你可以使用 %zu在格式字符串中打印 sizeof 返回的值.

    关于c - 在字符指针数组的情况下, 'array name' 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17564608/

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