【C++】C++中变量的声明与定义的区别
声明(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 //定义global_x变量 ,在任何包含了该文件的文件中都可以使用global_x变量 int global_x = 20; #endif
file.h
#include <iostream> #include "header.h" extern int global_x;//声明 global_x 变量 int main(){ std::cout << "global_x = " << global_x << std::endl; return 0; }
file.h文件声明了global_x变量,但是globar_x变量的定义是在header.h文件中。
用 g++ file.h -o file 命令编译后会得到可执行文件(file),再用命令 ./file 运行file文件。
结果如下:
global_x = 20;
分类:
C++
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
2017-01-08 【java】Java泛型