简单说,C++变量声明与定义的区别-创新互联

变量声明与定义的关系。

为了能够把程序分成多个逻辑部分来进行编写。C++支持分离式编译1机制,这个机制使我们可以将程序分割成若干个文件,每个文件都可以被独立编译。

成都网站设计、做网站、成都外贸网站建设公司的关注点不是能为您做些什么网站,而是怎么做网站,有没有做好网站,给创新互联建站一个展示的机会来证明自己,这并不会花费您太多时间,或许会给您带来新的灵感和惊喜。面向用户友好,注重用户体验,一切以用户为中心。

那我们将一整个程序切割成了多个文件,为了使这些文件联系起来,则肯定需要有一种文件间可以共享代码的方式。例如,一个文件的代码可能需要使用另一个文件中定义的变量。
一个实际的例子是,std::cout 和 std::cin 它们都定义于标准库,却能够被我们写的程序所使用。

为了支持分离式编译,C++将声明与定义区分开来。声明使得名字被程序所知,一个程序如果想要使用别的文件所定义的名字,就要包含对那个名字的声明,而定义是负责创建名字所对应的实体。

变量声明规定了变量的类型与名字,在这一点上定义与之相同,除此之外,定义还申请了变量类型所对应的内存空间,也有可能对变量赋予了初始值。

如果想要声明一个变量而不去定义它,就需要在变量类型前加上extern关键字,而且不要显式的去初始化变量。

extern int a; //声明变量a
int b; //声明并定义b;
extern int c = 5; //定义c,并给c赋初始值5。如果c是全局变量,则会被编译器给予警告,
				  //‘extern’变量有一个初始值。如果是在函数体内部,则会直接报错。

任何初始化了的变量都会成为定义。我们可以给extern的变量加上一个初始值,但这同样也抵消了extern关键字的作用,使这个声明成为了一个定义。在函数体内,初始化一个extern变量将会引发错误。

如果在多个文件中需要用到同样的变量,就必须将变量的声明与定义分开来写。变量的定义必须出现在且只能出现在同一个文件之中,而其他需要用到这个变量的文件,则需要对这个变量进行声明。

一个变量可以被声明无数次,但只能被定义一次。这一点非常重要!!!

总结

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

额外的小知识。

函数也可以多次声明,但函数的声明和变量的区别在于,函数的声明不需要在函数类型前加extern关键字,而是省略了函数体。

void count();//声明了count这个函数
void count();//重复声明,不会报错。

  1. 分离式编译模式源于C语言,在C++语言中继续沿用。简单地说,分离编译模式是指:一个程序(项目)由若干个源文件共同实现,而每个源文件单独编译生成目标文件,最后将所有目标文件连接起来形成单一的可执行文件的过程。 ↩︎

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


本文名称:简单说,C++变量声明与定义的区别-创新互联
文章URL:http://azwzsj.com/article/djchej.html