[转贴]宣告一个变量时,若没去用,是否会浪费内存?
在C/C++中,只要宣告一个变量,如int i,尽管没去用它,内存已经占了4 byte的内存了,这个动作称为Definition,以下简单的源代码即可证明,结果可显示该变量的内存地址。
 1 #include <iostream>
#include <iostream>
2
3 using namespace std;
using namespace std;
4
5 int main() {
int main() {
6 int i;
  int i;
7
8 cout << &i << endl;
  cout << &i << endl;
9 
  
10 return 0;
  return 0;
11 }
}
 #include <iostream>
#include <iostream>2

3
 using namespace std;
using namespace std;4

5
 int main() {
int main() {6
 int i;
  int i;7

8
 cout << &i << endl;
  cout << &i << endl;9
 
  10
 return 0;
  return 0;11
 }
}
若只想宣告变量,却不想先占用内存,等要使用时才占内存,这种叫做Declaration,只要加上extern即可
 1 #include <iostream>
#include <iostream>
2
3 using namespace std;
using namespace std;
4
5 int main() {
int main() {
6 int i;
  int i;
7 extern int j;
  extern int j;
8
9 cout << &i << endl;
  cout << &i << endl;
10 count << &j << endl;
  count << &j << endl;
11 
  
12 return 0;
  return 0;
13 }
}
 #include <iostream>
#include <iostream>2

3
 using namespace std;
using namespace std;4

5
 int main() {
int main() {6
 int i;
  int i;7
 extern int j;
  extern int j;8

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


 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号