在C/C++中,只要宣告一个变量,如int i,尽管没去用它,内存已经占了4 byte的内存了,这个动作称为Definition,以下简单的源代码即可证明,结果可显示该变量的内存地址。

 1(原創) 宣告一个变量时,若没去用,是否会浪费内存? (C/C++) (C)#include <iostream>
 2(原創) 宣告一个变量时,若没去用,是否会浪费内存? (C/C++) (C)
 3(原創) 宣告一个变量时,若没去用,是否会浪费内存? (C/C++) (C)using namespace std;
 4(原創) 宣告一个变量时,若没去用,是否会浪费内存? (C/C++) (C)
 5}



若只想宣告变量,却不想先占用内存,等要使用时才占内存,这种叫做Declaration,只要加上extern即可

 1(原創) 宣告一个变量时,若没去用,是否会浪费内存? (C/C++) (C)#include <iostream>
 2(原創) 宣告一个变量时,若没去用,是否会浪费内存? (C/C++) (C)
 3(原創) 宣告一个变量时,若没去用,是否会浪费内存? (C/C++) (C)using namespace std;
 4(原創) 宣告一个变量时,若没去用,是否会浪费内存? (C/C++) (C)
 5}

 


以上的程序,无法编译成功,会出现『undeclared identifier』的错误讯息,因为在C/C++中,任何变量必须经过Definition后才能使用,也就是说变量必须占了内存才能用,j因为宣告为extern,只有Declaration,但尚未Definition,没有内存地址,所以Compile无法过。


Reference
C++ Primer 4th P.52,P.53

相关文章:

  • 2021-08-12
  • 2021-07-28
  • 2022-03-06
  • 2021-10-27
  • 2021-11-26
  • 2022-03-06
  • 2021-12-03
  • 2021-09-09
猜你喜欢
  • 2021-06-08
  • 2021-10-30
  • 2021-05-15
  • 2021-05-20
  • 2021-12-08
  • 2021-05-24
  • 2022-01-06
相关资源
相似解决方案