C中的变量定义和内存分配

时间:2015-02-23 11:48:53

标签: c memory allocation definition

作为C语言的初学者,我想知道关于同一变量的双重定义的内存分配结果是什么,即:

第一个文件:file.h

int data;

第二个文件:main.c

#include "file.h"
...
int data = 56;
...

3 个答案:

答案 0 :(得分:3)

第1点#include file.h错了。你需要写至少#include "file.h"

第2点。概念本身也是错误的,因为这两个变量都在全球空间中。它会给你多个定义错误。

注意:但是,如果在函数内部执行int data = 56;,那么就可以了,就那个时间点而言,它将成为该函数的局部变量

另外,我建议您阅读有关include guard的内容。否则,如果您在头文件中定义变量,则在源文件中多次包含头文件也会产生多个定义错误。

最佳实践:

  • 在头文件中声明变量。 [extern int data;]
  • 在(其中一个)源文件中定义变量。 [int data = 56; / int data;]

答案 1 :(得分:1)

如果您想双重声明变量,请使用

extern int data;
file.h中的

关于extern variables的更多内容。

此外,#include file.h有误,请写下"#include "file.h"

答案 2 :(得分:-1)

实际上两者都是一样的  int data; 1.在这里你要声明一个整数变量,而不是初始化它的值。

#include file.h
...
int data = 56;
...
  1. 在此您声明一个整数变量而没有启动。 因为两个可变数据的声明都在同一个文件上。所以它会显示错误。 变量不能在同一个文件(范围)中声明两次。