【问题标题】:Reusing of Variable and memory concept in C在 C 中重用变量和内存概念
【发布时间】:2023-09-17 15:29:01
【问题描述】:

如果我将变量声明为 - extern int c; // 我可以在另一个函数中重用这个变量,并且没有分配内存。

如果我将一个变量初始化为 - uint32 a[32]; // 分配了 32*4 字节的内存。如何在另一个程序中重用上述变量?示例:我正在使用指针来访问它的值或地址。

【问题讨论】:

  • MAIN.c : extern uint32 a[32];并尝试在另一个程序中重用它,因为我
  • “另一个程序”是什么意思?你的意思是像shared memory 之间的进程吗?
  • 如果您遇到编译器或链接器错误,请编辑您的问题以包含它们(完整且未经编辑)。另请编辑您的问题以显示完整的代码示例(也称为SSCCE)。您可能还应该阅读the Stack Overflow question checklist,它将帮助您在未来写出更好的问题。
  • @user2984410 你是在自言自语吗?
  • 对此我深感抱歉。

标签: c arrays pointers memory extern


【解决方案1】:

仅当您有多个源文件时才使用extern。外部变量是在另一个翻译单元中定义的变量的声明。定义变量时编译器分配存储空间

更多信息请参考THIS POST ON SO

【讨论】:

  • MAIN.h : extern int a; ONE.c : int a[32];二.c : int *p; p=&a; // 我将在 ONE 和 TWO 程序中包含 MAIN.h。为什么不工作??
  • int a 和 int a[] 是不同的。一是数组。将您的 extern 更改为 extern int a[32];
  • MAIN.h : extern int a[32]; ONE.c : int a[32];二.c : int *p; p=&a; // 为什么它不工作??我在两个程序中都包含 .h 文件。
  • 使用 gcc ONE.c TWO.c -o main 编译
  • 我正在使用 visio c++ 作为 IDE。
最近更新 更多