码迷,mamicode.com
首页 > 编程语言 > 详细

【C++】C++中变量的声明与定义的区别

时间:2019-01-08 01:00:57      阅读:215      评论:0      收藏:0      [点我收藏+]

标签:hat   结构   div   编译器   double   source   ble   rod   using   

声明(declaration):意味着告诉编译器关于变量名称、变量类型、变量大小、函数名称、结构名称、大小等等信息,并且在声明阶段不会给变量分配任何的内存。

定义(definition):定义就是在变量声明后,给它分配上内存。可以看成“定义 = 声明 + 内存分配”。

例如:

#include <iostream>
using namespace std;
int addtion(int a,int b);//声明
struct product{unsigned int weight;double price;};//声明

int main(){
cout << "addtion is " << addtion(6,8) << endl;
product apple,orange;//定义
return 0;
}
//定义
int addtion(int a,int b){
return a+b;
}

上面的案例中,

int addtion(int a,int b);
struct product{unsigned int weight;double price;};

上面是声明,它们只是告诉编译器有这个东西,并不会分配内存。

product apple,orange;
int addtion(int a,int b){return a+b;}

上面是定义,给他们会被分配内存。

声明和定义还有一种常见的,就是extern修饰的变量。当使用extern关键字修饰变量(未初始化),表示变量声明。当在另一个文件中,为extern关键字修饰的变量赋值时,表示变量定义。
例如:
header.h

#ifndef HEADER_H
#define HEADER_H
// any source file that includes this will be able to use "global_x"
int global_x = 20;

#endif

file.h

#include <iostream>
#include "header.h"

extern int global_x;

int main(){

std::cout << "global_x = " << global_x << std::endl;

return 0;
}

然后用 g++ file.h -o file 编译后
再用./file运行
结果如下:

global_x = 20;

 

【C++】C++中变量的声明与定义的区别

标签:hat   结构   div   编译器   double   source   ble   rod   using   

原文地址:https://www.cnblogs.com/HDK2016/p/10236702.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!