c - 为什么将 sizeof 运算符应用于外部变量不输出 0

标签 c

以下代码的输出是4。 不应该是 0 吗?

由于 a 已声明但未定义,因此未为其分配内存。

#include <stdio.h>
#include <stdlib.h>

int main()
{
    extern int a;
    printf("%ld",sizeof(a));

    return 0;
}

最佳答案

我们知道 a 的大小是多少,即使它没有在这个模块中定义。 sizeof 不会告诉您已为该模块中的对象分配了多少内存。它告诉您对象需要多少内存。

关于c - 为什么将 sizeof 运算符应用于外部变量不输出 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51560280/

相关文章:

c++ - 我们可以在没有#ifdef __cplusplus 的情况下在C 文件中使用extern "C"吗?

c - C中堆栈溢出和无限次循环调用的区别

c - 通过中断或类似方式异步退出循环 (MSP430/C)

java - 两个应用程序之间的原始套接字通信(一个在 C 中,一个在 Java 中)

c - 指向结构的指针的语法 - 链表

c - 如何初始化 union 体?

c - 如何在不先左移的情况下对两个数字进行“或”运算?

c - 没有 `...` 的可变参数函数

c - 为什么在为我的敲击中的字符串分配内存后会出现 0xCCCCCCCC 错误?

c - 为什么我在每个 "Expected expression"时都会收到 "else"错误?