c++ 中的 声明和定义 区别

C++声明和定义的区别 声明是告知编译器该变量的 阅读详情
       声明(declaration),指定了变量的类型与名称。声明的目的是为了让变量名对程序而言是已知的。

    定义(definition),不仅要指定变量的类型和名称,还要分配存储空间,甚至提供初始值。同时,定义也是声明。

    既然变量定义已经包括变量声明的功能了,为何还要变量声明呢?

    存在变量声明是为了支持单独编译(separate compilation)。单独编译允许文件A中的代码能够使用在文件B中定义的变量mystring。声明的存在是为了告诉编译器:文件A中的变量mystring定义在了其他的文件中,请先编译文件A,待遇到变量mystring的定义后,再给文件A的变量mystring分配存储空间或赋值。

   举个例子:

    B.h

#include <iostream>
#include <string>
using  std::string;
void Printmsg(string x);

    B.cpp

#include <iostream>
#include "B.h"
extern string mystring;
extern string mystring2="error";
void Printmsg(string mystr){
    std::cout<<"你刚刚输入的是:"<<mystr;
}

    A.cpp

  

#include <iostream>
#include "B.h"
using namespace std;
string mystring="hello word";
//string mystring2="error0";

int main()
{
   Printmsg(mystring);
   return 0;
}



假如把A.cpp中mystring2注释去掉,将会出现什么情况呢?大家试试。
Xilinx的DDR4 IP 阅读详情

相关推荐

别再纠结选哪个向量库了!我用Spring AI + Redis Stack 7.2,5分钟搞定企业知识库RAG原型

本文介绍了如何利用Spring AI和Redis Stack 7.2快速构建企业级RAG应用,解决向量数据库选型难题。Redis Stack 7.2集成了RediSearch模块,支持向量相似性搜索,具备高性能、低成本、零学习成本等优势,特别适合中小团队快速搭建知识库系统。通过实战代码示例,展示了从环境准备到核心功能实现的完整流程。

weixin_29061041的博客 270

【C/C++面试必备】声明和定义的区别

???? 作者:Linux猿 ???? 简介:优快云博客专家????,C/C++、面试、刷题、算法尽管咨询我,关注我,有问题私聊! ???? 关注专栏:C/C++面试通关集锦(优质好文持续更新中……)???? 目录 一、变量的声明和定义 1.1声明 1.2定义 1.3 区分定义和声明 二、函数的声明和定义 2.1 函数声明 2.2 函数定义 2.3 函数声明和定义区分 三、声明和定义的区别 3.1 声明/定义次数 3.2 分配内存 3.3 做了什么 本文来介绍一下声明和定义

Muti-Agent 2万+

手把手教你搭建《黑色沙漠》单机版:从下载到联机的完整指南(含GM工具使用)

本文提供《黑色沙漠》单机版从下载安装到GM工具使用及局域网联机的完整教程。详细解析不同版本选择、系统配置要求、常见问题解决,并分享GM工具高级命令和局域网联机设置技巧,帮助玩家轻松搭建个性化游戏环境。

weixin_28738165的博客 467

简单说,教你彻底理解C++中声明和定义的区别!

声明与定义的区别在于,声明是让变量的名字和类型被程序所知,而定义比声明多申请了一个内存空间。要想只声明而不定义变量,就需要在变量类型前加上extern关键字。否则就是声明且定义。任何初始化过的变量都是定义。

weixin_49503250的博客 1445

5分钟搞定CST周期性结构仿真:共面波导色散曲线快速生成技巧

本文提供了一套在CST Studio Suite中快速仿真周期性结构并生成色散曲线的标准化流程。针对共面波导设计,重点解析了周期性边界条件的核心设置、本征模求解器(JDM算法)的优化技巧,以及通过参数扫描与后处理模板实现自动化,旨在帮助射频与微波工程师在5分钟内高效完成关键性能验证。

blue的专栏 1247

YOLOv8n行人检测实战:从数据集准备到模型训练

本文详细介绍了使用YOLOv8n进行行人检测的完整流程。首先阐述了YOLOv8的优势:高速推理(300+FPS)、更高精度、易用性和轻量化(仅6MB)。接着通过Docker搭建GPU训练环境,配置32GB共享内存避免数据加载问题,并安装必要的框架和OpenCV组件。数据集采用COCO2017标注格式,包含归一化坐标的YOLO标签文件。通过可视化脚本验证标注准确性后,提出多数据集融合训练策略以增强模型泛化能力。最后使用Ultralytics框架启动训练,展现了从环境搭建到模型训练的完整技术路径。该方案兼顾检测

Hi20240217的博客 1090

c++声明 和 定义 的区别

定义 = 声明 + 初始化(就是给一个值) ①变量定义:用于为变量分配存储空间,还可为变量指定初始值。程序中,变量有且仅有一个定义。 ②变量声明:用于向程序表明变量的类型和名字。 ③定义也是声明:当定义变量时我们声明了它的类型和名字。 ④extern关键字:通过使用extern关键字声明变量名而不定义它。 1.定义也是声明,extern声明不是定义,即不分配存储空间。exter...

zxf347085420的博客 1378

Amesim管路仿真进阶:如何用阻力管实现不规则管路的高精度模拟

本文深入探讨了在Amesim仿真中,如何利用阻力管(Orifice with Table)元件,特别是TFORT0子模型,实现对不规则管路的高精度模拟。通过直接输入基于测试或CFD的流量-压降数据,该方法能有效弥补标准管路模型在复杂流道、内部结构复杂等场景下的不足,为液压、热管理等系统仿真提供精准可靠的部件模型。

cicd6pipeline的博客 670

error: expected constructor, destructor, or type conversion before '.' token

今天写代码是遇到这样一个问题error: expected constructor, destructor, or type conversion before '.' token;立马网上查,原来是说不能再全局域进行不能用于赋值、运算、调用函数等,只能做变量的声明和初始化变量。 下面是我出错的代码: #include <iostream> int a[100]; m...

an112533的专栏 5578

基于ADS\HFSS\Matlab的平面带通发夹滤波器设计

写在最前面,前段时间完成了一个小项目,实现13.5~14GHz的带通滤波器,算是第一个微波项目,在老师、学长、各种大神的指点下,最终完成了指标,想来这段时间收获良多,想到老师教导的,有能力的话要尽可能帮助别人,以及网络上很少面向于小白的教程,于是决定把自己做这个小项目的经过,一些关键步骤,还有软件操作和公式讲解都发出来,供大家指正借鉴。由于我目前大三,刚学习电磁场、微波工程等等,技术实在有限,同时这样是我第一次发帖子,只能尽可能的将自己确认过正确的内容,步骤以及一些经验写出来,供大家借鉴。

likaifeng12138的博客 5216

某勾网之登录过程逆向

拉勾网的登录过程逆向,包含请求头(X-S-HEADER、X-K-HEADER、X-SS-REQ-HEADER等) 以及 请求参数/返回数据的加解密。

shanf7921的博客 3万+

cpp基础: c++ 定义与声明的区别

为了支持分离式编译,c++语言将声明和定义区分开来 声明(declaration) 是为了让程序为程序所知,一个文件如果想使用别处定义的名字则必须包含对那个名字的声明 定义(definition) 是创建了与名字有关的实体,及分配空间或可能为变量附上初始值 变量声明规定了变量的类型和名字,在这一点上定义与之相同 c++中,在变量名前添加extern关键字,并且不显式的初始化变量,就是声明而

qq_32774559的博客 417

利用dpabi和restplus提取ROI灰质体积学习笔记

目录前言一、数据准备二、利用dpabi提取ROI灰质体积三、restplus提取ROI灰质体积 前言 我利用SPM/CAT12进行灰质、白质、脑脊液分割之后分别已经得到各自的图像文件,在全脑水平已经做了统计分析。如果还想要进一步进行ROI的统计分析或者与量表等临床资料做相关分析,就需要提取ROI灰质体积。几个月没动过这数据了,突然心血来潮想学一下如何提取ROI灰质体积,以此篇博客记录我的提取ROI灰质体积学习过程。提取ROI灰质体积的方法及软件有许多种,本人尝试了dpabi和restplus。 一、数据准备

weixin_52073820的博客 9224

C++-声明和定义的区别模块

声明的意义在于告诉编译器程序单元的存在。定义则明确指示程序单元的意义。C语言通过extern进行程序单元的声明。一些程序单元(函数、结构体)在声明时可以省略extern。严格意义上的声明和定义并不相同。(1)声明和定义如果变量类型不一致,将导致错误的解析。// main.c// 将得到错误的结果return 0;(2)对于结构体类型如果只有声明而没有定义是无法使用sizeof得到结构体类型的大小的。int a;对于如下语句,哪个是变量定义?

Asincereman的专栏 999

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

C++定义与声明 区别

C++ 声明 定义

sjxbf的专栏 4万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

C++中声明与定义的区别

C++学了这么多年你知道为什么定义类时,类的定义放在.h文件中,而类的实现放在cpp文件中。它们为什么能够关联到一起呢?你知道什么东西可以放在.h文件中,什么不能。什么东西又可以放在cpp文件中。如果你忘记了或是压根就不明白,那么读过此文你会清晰无比!!         首先谈下声明与定义的区别。         声明是将一个名称引入程序。定义提供了一个实体在程序中的唯一描述。声明和定义有

phenixyf的专栏 3400

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

C++中定义和声明的区别

一个C++程序可能由许多文件构成,为了让多个文件访问相同的变量,C++区分了声明和定义。 变量的定义(definition)用于为变量分配存储空间,还可以为变量指定初始值。在程序中,变量有且仅有一个定义。 声明(declaration)用于向程序表明变量的类型和名字。定义也是声明:当定义变量的时候我们声明了它的类型和名字。可以通过使用exte...

hanzhen7541的博客 531

cpp中变量的声明与定义的区别

 从本质的角度来说,声明与定义的区别在于前者完全不需要分配存储空间而后者需要。但是声明与定义的形式丰富,我们必须了解什么样形式的cpp句子是声明句、又是什么样的句子才能叫做定义句。。        一、先说内置类型的变量:int、char....     对于内置类型变量来说:1、所有以内置类型名开头+空格+变量名; 的句子都是定义句。如 int x;   char c;2、所有 ex

woaiyu_liang的专栏 1598

深入分析C++中声明与定义的区别

如有转载,请注明出处。本文出处http://www.jb51.net/article/54613.htm C++学了这么多年你知道为什么定义类时,类的定义放在.h文件中,而类的实现放在cpp文件中。它们为什么能够关联到一起呢?你知道什么东西可以放在.h文件中,什么不能。什么东西又可以放在cpp文件中。如果你忘记了或是压根就不明白,那么读过此文你会清晰无比!!   首先谈下声明与定义的区别。

A_Ly的专栏 455

C++声明和定义区别

C++声明和定义的区别收藏 《C++Primer》第四版2.3.5节中这么说到: ①变量定义:用于为变量分配存储空间,还可为变量指定初始值。程序中,变量有且仅有一个定义。 ②变量声明:用于向程序表明变量的类型和名字。 ③定义也是声明:当定义变量时我们声明了它的类型和名字。 ④extern关键字:通过使用extern关键字声明变量名而不定义它。 1.定义也是声明,e...

fujibao的博客 310

c++中声明和定义的区别

前言:网上有些关于C/C++中函数和定义之间的没有描述的很清晰,这里总结一番: 声明和定义在作用于变量和函数中是有区别的:这也是网上一些说话有分歧的地方; 1.声明和定义变量时: 要区别这两个词,需要从编译器的角度来看,当编译器编译你的程序时,声明是仅仅告诉编译器,有个某类型的变量会被使用,但是编译器并不会为它分配任何内存。而定义就是分配了内存。主要区别是int a;int b=1;exte...

weixin_40405758的博客 1007

c++ 声明与定义的区别

在c++的使用过程中,经常听到变量的定义、声明,也经常出现两者定义随意混用的情况,其实两者的差别还是比较大的。 两个术语的英语定义为: Declaring is like telling the machine that you want say for example, the variable "x" to exist, you can also set it to somethi

Kikim的地盘 1180

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

变量的定义 变量的定义用于为变量分配存储空间,还可以为变量指定初始值。在一个程序中,变量有且仅有一个定义。 变量的声明 用于向程序表明变量的类型和名字。程序中变量可以声明多次,但只能定义一次。变量的声明有两种情况 一种是分配内存空间的(声明)。例如:int a在声明的时候就已经分配了内存空间。 另一种是不需要分配内存空间的(声明)。例如:extern int a其中变量a是在别的文件中定义的。 第一种是"定义性声明",或者称为”定义",第二种是"引用性声明"。 ...

jinking01的专栏 716
上一篇: 菜鸟自学Python之控制流语句
下一篇: cocos2d-x学习:CCSprite总结
深巷落叶
博客等级 码龄16年 1粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值