c - C 数组的大小

标签 c arrays

有一个问题让我困惑。下面的代码中 msg 和 quote 都是 char 数组。为什么 sizeof(msg) 和 sizeof(quote) 给出了不同的结果?

代码:

#include <stdio.h>

void fortune_cookie(char msg[])
{
    printf("Message reads: %s\n",msg);
    printf("msg occupies %i bytes\n",sizeof(msg));

}

int main()
{
    char quote[] = "Cookies make you fat";

    printf("quote occupies %i bytes\n",sizeof(quote));

    fortune_cookie(quote);
    return 0;
}

结果:

quote occupies 21 bytes                                                                                                              
Message reads: Cookies make you fat
msg occupies 8 bytes

最佳答案

sizeof 数组等于 sizeof 每个元素的总和。

当您将数组传递给函数时,它会传递指针。

就您而言:

quote 占用 21 个字节:表示你的 char 数组有 21 个元素,每个元素大小为 1。 msg 占用 8 个字节:表示您的参数是一个指针,在 64 位机器上将保存 8 个字节,在 32 位机器上将保存 4 个字节。

关于c - C 数组的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20536564/

相关文章:

arrays - 在 Perl 中复制数组次数

Java套接字接收字节数组,其中每个字节都是0

c# - swift 中对内部数组的本地引用

c++ - 必须在赋值中赋值

c - 如何在 Linux 中限制 C 代码的堆大小

c - 在 C 中取消引用双指针

python - 二维数组支持是什么意思?

c - 缓冲区指针作为 c 函数中的参数

c - C中无符号到有符号的转换

c - 在指向 char 的指针数组中输入单词时出错