• 定义和声明


    变量的定义:为变量分配存储空间,还可以指定初始值。定义是“在这里建立变量”或“在这里建立函数”。对于变量,编译器确定变量的大小,然后在内存中开辟空间来保存其数据,对于函数,编译器会生成代码,这些代码最终也要占用一定的内存。变量仅有一个定义。定义也是声明。

    变量的声明:表明变量的类型和名字。它告诉编译器“这个函数或变量在某处可找到,它的模样象什么”。

     

    1.通过使用extern声明变量而不定义它。

    2.如果声明有初始化式,即使加了extern都被当做定义。只有当extern声明位于函数外部时,才可以被初始化。例如:extern double pi=3.14.

    3.不要把定义放在.h文件,这样会导致重复定义的错误。但是const变量的定义可以放在头文件中;类的定义也可以放到头文件中;inline函数也可以放在头文件中。原因如下:

    类定义是因为编译器需要它们的定义来产生代码。为了产生能定义和使用类的对象的代码,编译器需要知道组成该类的数据成员和可以执行的操作。类定义提供了这些信息,所以需要在头文件中定义。

    Const变量默认为定义它的文件的局部变量,所以即使在多个源文件中出现这个变量的定义也是合法的。

    4.尽量使用static把定义限制在该源文件作用域。

    (1)对于局部变量用static声明,则是为该变量分配的空间在整个程序的执行期内都始终存在。

    (2)外部变量用static来声明,则该变量的作用只限于本文件模块。

    5.基本类型变量的声明和定义(初始化)是同时产生的;而对于对象来说,声明和定义是分开的。

    例如:类A。如果A a;就是一个声明,告诉编译器a是A类的一个对象变量,但是不进行初始化;如果以后a=new A();这就是初始化,分配了空间。

  • 相关阅读:
    LOJ#3157. 「NOI2019」机器人 DP+拉格朗日插值
    BZOJ4832 [Lydsy2017年4月月赛]抵制克苏恩 记忆化搜索
    LazySysAdmin 靶机渗透
    zico2靶机渗透
    6_面向对象-下之关键字:static
    5_面向对象-中之单元测试方法、包装类的使用
    5_面向对象-中之Object类的使用
    5_面向对象-中之面向对象的特征三:多态性
    5_面向对象-中之子类对象实例化全过程
    5_面向对象-中之关键字:super
  • 原文地址:https://www.cnblogs.com/healthylife/p/5866368.html
Copyright © 2020-2023  润新知