精华内容
下载资源
问答
  • 变量的定义:用于为变量分配存储空间,还可以为变量指定初始值。 变量的初始化:为变量指定初始值。 广义上来说,变量的声明有两种情况: 1.需要建立存储空间的声明。例如:int a,我们在声明的时候就建立的存储...

    变量的声明:用于向程序表明变量的类型和名字。
    变量的定义:用于为变量分配存储空间,还可以为变量指定初始值。
    变量的初始化:为变量指定初始值。

    广义上来说,变量的声明有两种情况:

    • 1.需要建立存储空间的声明。例如:int a,我们在声明的时候就建立的存储空间。
    • 2.不需要建立存储空间的声明。例如: extern int a,变量a 是在别的文件中定义的。

    这里,第一种情况是定义性声明(defining declaration),因为这种情况的声明为变量创建了存储空间,所以是包含定义的。而第二种情况则是引用性声明(referncing declaration),这种情况的声明告诉了程序变量的类型和名字,以及告诉程序该变量的定义是在其他文件中。

    从广义的角度来讲声明是包含定义,即定义是声明的一个特例,但是并非所有的声明都包含定义。例如:int a 它既是声明,同时又是定义。而 extern a 它只是声明不是定义。

    一般的情况下,我们把建立空间的声明称之为定义,而把不需要建立存储空间的声明称之为声明

    变量的初始化,就很简单了,为变量声明或者定义之后,赋上初始值的过程,就是变量的初始化。
    int a只是对变量的定义,因为它并没有为a赋上初始值,所以它是不包含变量的初始化的。

    int a = 100,这句语法就包含了变量的初始化,所以它既是变量的定义,也是变量的初始化。

    当然,我们也可以分开写:

    int b;  // 这是变量的定义
    b = 20; // 这是为变量做初始化
    

    例如:

    int main() {
    extern int A;
    //这是个声明而不是定义,声明A是一个已经定义了的外部变量
    //注意:声明外部变量时可以把变量类型去掉如:extern A;
    dosth(); //执行函数
    }
    int A; //是定义,定义了A为整型的外部变量
    

    外部变量的定义与外部变量的声明是不相同的,外部变量的定义只能有一次,它的位置是在所有函数之外,而同一个文件中的外部变量声明可以是多次的,它可以在函数之内(哪个函数要用就在那个函数中声明)也可以在函数之外(在外部变量的定义点之前)。
    系统会根据外部变量的定义(而不是根据外部变量的声明)分配存储空间的。对于外部变量来讲,初始化只能是在定义中进行,而不能在声明中。所谓的声明,其作用,是声明该变量是一个已在后面定义过的外部变量,仅仅是为了提前引用该变量而作的声明而已。因此extern 只作声明,不作任何定义。

    我们声明的最终目的是为了提前使用,即在定义之前使用,如果不需要提前使用就没有单独声明的必要,变量是如此,函数也是如此,所以声明不会分配存储空间,只有定义时才会分配存储空间。

    用static来声明一个变量的作用有二:

    • (1)对于局部变量用static声明,则是为该变量分配的空间在整个程序的执行期内都始终存在。
    • (2)外部变量用static来声明,则该变量的作用只限于本文件模块。

    文中大部分内容转自:http://www.cnblogs.com/GavinDai/archive/2011/10/24/2222735.html

    展开全文
  • C语言——全局变量的定义与声明

    万次阅读 多人点赞 2019-09-28 12:31:34
    C语言中全局变量的定义与声明困扰着许多C语言初学者。本文讲述了全局变量定义与声明的用法,而且本为也将阐述这种用法的内在原理。我们先从两个错误例子引入,以下两个例程都在vc6.0平台上测试。 两种错误例程 1....

    转自:

    https://www.cnblogs.com/amanlikethis/p/3319744.html 

     

    C语言中全局变量的定义与声明困扰着许多C语言初学者。本文讲述了全局变量定义与声明的用法,而且本为也将阐述这种用法的内在原理。我们先从两个错误例子引入,以下两个例程都在vc6.0平台上测试。

    两种错误例程

    1.unresolved external symbol

    例子包含两个C文件(test.c)和(first.c)和一个头文件(test.h)。下边具体展示下它们的代码。

    test.h内容

    #ifndef _TEST_H
    #define _TEST_H
     
    extern int count;   
    
    #endif

    test.c内容

    #include <stdio.h>
    #include "test.h"
    extern void Fis_Cal(void);
    void main(void)
    {
     Fis_Cal();
      printf("the present value of count is %d\n",count);
    }

    first.c内容

    #include <stdio.h>
    #include "test.h"
    void Fis_Cal(void)
    {
     printf("the last value of count is %d\n",count);
     count = 1;
    }

    错误分析:test.h头文件中声明了全局变量count,但是在两个C文件中都没有对count进行定义,所以才会出现unresolved external symbol。

    一种解决方法:随便在两个C文件中加入一句“int count;”就OK了。例如我们加到test.c中,代码如下。 

    #include <stdio.h>
    #include "test.h"
    extern void Fis_Cal(void);
    int count;
    void main(void)
    {
     Fis_Cal();
     printf("the present value of count is %d\n",count);
    }

    说明:加入的“int count;”就是对count的定义,默认的将其初始化为0。

    结论:这种错误原因是“只声明未定义”。

    2.multiply defined symbols found

    还是如此,三个文件。但是,两个C文件与例程一中的文件一样,改动的只是头文件。

    test.h内容

    #ifndef _TEST_H
    #define _TEST_H
     
    int count; 
    
    #endif

    可以看到,与例程一仅仅差了一个“extern”关键词。

    错误分析:test.h头文件中定义了全局变量count,但是在两个C文件都通过“#include "test.h"”这句话对“int count;”进行了引用,所以造成了重复定义的错误。

    一种解决方法:添加一个“first.h”的头文件,并且更改first.c的内容,具体更改如下。

    first.h内容

    #ifndef _FIRST_H
    #define _FIRST_H
    
    extern int count;
    
    #endif

    first.c内容

    #include <stdio.h>
    #include "first.h"
    void Fis_Cal(void)
    {
     printf("the last value of count is %d\n",count);
     count = 1;
    }

    说明:经过这样的修改,原来的test.c中就包含了count的定义,而first.c中就包含了对count的声明,重复定义错误就得到解决。

    结论:这种错误原因是“多个C程序都包含了定义全局变量的头文件”。 

    原理分析

        我认为“int count;”是对全局变量的定义,而“extern int count”是对全局变量的声明,目的是让其他文件也使用这个全局变量。下边我们来挖掘全局变量的定义与声明的内涵。

        全局变量要么初始化(非零),要么没有初始化(为零)。非零时存储在程序中的data段,零时存储在程序的bss段。这谈了程序(.bin或者.hex)的结构。我再讲一下程序的启动,程序在启动(boot)过程中,通常都会运行一个叫bootloader的引导程序,这个引导程序干了很多事情,其中有一最重要的任务就是把程序(test段和rodata段)拷贝到内存,还包括data段的拷贝和bss段初始化。我们着重讲一下data段的拷贝和bss段初始化。

        我们的编译器会为我们定义的全局变量分配内存(地址),而且给我们的全局变量赋初值(写内存或清零),以后我们的程序就会根据需要来读这个全局变量(地址)或者修改这个全局变量(写内存)。初值为零时就在bss段,这个段初始化代码会将这部分清零。初值非零时,初始化代码会将全局变量的初值拷贝到data段。

        那么,显然全局变量的初值只有一个。我们程序中的全局变量的定义就是对全局变量分配内存并赋初值。而全局变量的声明是为了跨文件使用全局变量的需要,通过"extern"关键词来将全局变量引出。 

    顺便说一下C语言的存储类说明符,这能帮助我们加深理解。

    C语言的存储类说明符

         Auto 只在块内变量声明中被允许, 表示变量具有本地生存期。

         Extern 出现在顶层或块的外部变量函数与变量声明中,表示声明的对象具有静态生存期, 连接程序知道其名字。

        Static 可以放在函数与变量声明中,在函数定义时,只用于指定函数名,而不将函数导出到链接程序,在函数声明中,表示其后边会有定义声明的函数,存储类型static.在数据声明中,总是表示定义的声明不导出到连接程序关键字。

    一种更好的声明与定义方式

    test.h内容 

    #ifndef _TEST_H
    #define _TEST_H
     
    #ifdef GLOBALS
    int count;
    #else
    extern int count;
    #endif 
    
    #endif

    test.c内容

    #define GLOBALS
    #include <stdio.h>
    #include "test.h"
    extern void Fis_Cal(void);
    void main(void)
    {
     Fis_Cal();
     printf("the present value of count is %d\n",count);
    }

    first.c内容

    #include <stdio.h>
    #include "test.h"
    void Fis_Cal(void)
    {
     printf("the last value of count is %d\n",count);
     count = 1;
    }

    说明:这种方法可以只定义一个头文件实现在不同C文件中分别实现定义与声明。“#define GLOBALS”只在当前定义的test.c文件中有效,所以在test.c中#include "test.h"预处理后,加入的是int count,而first.c中加入的"extern int count;"。其实还有一种书写方法,也能实现这个效果。

    test.h内容 

    #ifndef _TEST_H
    #define _TEST_H
     
    #ifdef GLOBALS
    #define EXT
    #else
    #define EXT extern
    #endif
    
    EXT int count;
    
    #endif

     

    展开全文
  • python中变量的定义、命名

    万次阅读 2018-07-18 19:16:14
    2.变量的定义 在 python 中,每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建 等号(=)用来给变量赋值 =左边是一个变量名 =右边是存储在变量中的值 变量名 = 值 变量定义之后,后续就可以直接使用了 ...

    变量

    1.什么是变量?
    变量名只有在第一次出现才是定义变量(变量名再次出现,不是定义变量,而是直接使用之前定义的变量)
    2.变量的定义
    在 python 中,每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建
    等号(=)用来给变量赋值
    =左边是一个变量名
    =右边是存储在变量中的值
    变量名 = 值
    变量定义之后,后续就可以直接使用了

    变量的命名

    1.标识符和关键字
    标识符
    标识符就是程序员定义的变量名,函数名

    • 名字需要有见名知义的效果
    • 标识符可以由字母,下划线和数字组成
    • 不能以数字开头
    • 不能与关键字重名

    关键字
    关键字就是在python内部已经使用的标识符
    关键字具有特殊的功能和含义
    开发者不允许定义和关键字相同的名字的标示符

    通过以下命令可以查看python中的关键字
    import关键字可以导入一个工具包
    在python中不同的工具包,提供有不同的工具
    这里写图片描述
    2.变量的命名规则
    命名规则可以被视为一种惯例,别无绝对与强制
    目的是为了增加代码的识别和可读性
    注意:python中的标识符是区分大小写的

    1. 在定义变量时,为了保证代码格式, = 的左右两边该各保留一个空格

    2. 在python中,如果变量名需要由两个或多个单词组成,可以按照以下方式命名(python中常用)

      • 每个单词都使用小写字母
      • 单词与单词之间使用_下划线连接
      • 例如:first_name,last_name….

    驼峰命名法:(其他语言常用的命名法)
    当变量名是由两个或多个单词组成,还可以利用驼峰命令法来命名
    小驼峰命名法
    第一个单词以小写字母开始,后续单词的首字母大写
    firstName lastName
    大驼峰命名法
    每一个单词的首字母都采用大写字母
    FirstName LastName

    • 变量应用示例:

    这里写图片描述

    变量的类型

    在内存中创建一个变量:会包括

    1. 变量的名称
    2. 变量保存的数据
    3. 变量存储数据的类型
    4. 变量的地址

    在 python 中定义变量是不需要指定类型(在其他很多高级语言中都需要)
    数据类新可以分为数字型和非数字型

    • 数字型
      • 整型(int)
      • 浮点型(float)
      • 布尔型(bool)
        真 True 非 0 数 — 非 0 即真
    • 非数字型
      • 字符串
      • 列表
      • 元组
      • 字典

    示例:定义变量保存小明的个人信息
    姓名:小明
    年龄:18 岁
    性别:是男生
    身高:1.75 米
    体重:75.0 公斤
    这里写图片描述
    使用 type 函数可以查看一个变量的类型
    在使用交互式终端时,也可以知道每个变量的准确类型
    这里写图片描述

    不同类型变量之间的计算

    • 数字变量之间可以直接计算

      在 python 中,两个数字型变量是可以直接进行算术运算的

    如果变量是 bool 型,在计算时
    True 对应的数字是 1
    Fals 对应的数字是 0

    - 字符串变量之间使用 + 拼接字符串
    在 python 中
    字符串之间可以使用 + 拼接生成新的字符串字符串变量
    可以和整数使用 * 重复拼接相同的字符串
    字符串变量和字符串之间不能进行其他计算
    这里写图片描述

    变量的输入

    所谓输入,就是用代码获取用户通过键盘输入的信息
    例如:去银行取钱,在 ATM 上输入密码
    在 python 中,如果要获取用户在键盘上的输入信息,需要使用 raw_input 函数
    关于函数:
    一个提前准备好的功能(别人或者自己写的代码),可以直接使用,而不用关心细节
    raw_input 函数实现键盘输入
    在 python 中可以使用 raw_input 函数从键盘等待用户的输入
    用户输入的任何内容 python 都认为是一个字符串
    示例:
    收银员输入橘子的价格,单位:元/斤(橘子价格不再固定)
    收银员输入用户购买橘子的重量,单位:斤
    计算并且输出付款金额
    这里写图片描述

    变量的格式化输出

    在 python 中可以使用 print 函数将信息输出到控制台
    如果希望输出文字信息的同时,一起输出数据,就需要使用到格式化操作符
    % 被称为格式化操作符,专门用于处理字符串中的格式

    • 包含%的字符串,被称为格式化字符串
    • % 和不同的字符连用,不同类型的数据需要使用不同的格式化字符
    格式化字符串 含义
    %s 字符串
    %d 有符号十进制整数,%06d 表示输出的整数显示位数字,不足的地方使用0 补全
    %f 浮点数,%.02f 表示小数点后只显示两位
    %% 输出%

    语法格式:

    • print ‘格式化字符串’ % 变量 1
    • print ‘格式化字符串’ % (变量 1,变量 2…)

    格式化输出的演练:
    1.定义字符串变量 name,输出:我的名字叫小明,请多多关照
    2.定义整数变量 student_nu,输出: 我的学号是 000001
    这里写图片描述

    展开全文
  • C语言中结构体变量的定义及引用

    万次阅读 多人点赞 2018-08-08 16:05:24
    一、结构体变量的定义 1.结构体类型与结构体变量分开定义 一般形式如下: struct<结构体名><结构体变量名>; eg:struct student student1,student2; 关键字struct要与结构体名student一起使用,...

    一、结构体变量的定义

    1.结构体类型与结构体变量分开定义

    一般形式如下:

    struct<结构体名><结构体变量名>;

    eg:struct student student1,student2;

    关键字struct要与结构体名student一起使用,共同构成结构体类型名

     

    2.结构体类型与结构体变量同时定义

    一般形式如下:

    struct<结构体名>

    {

    <成员列表>

    }<结构体变量名>;

     

    3.无名结构体与结构体变量同时定义

    一般形式如下:

    struct

    {

    <成员列表>

    }<结构体变量名>;

    由于这里省略了结构体名,没有完整的结构体类型名,所以不能在其他位置再定义此结构体类型的变量

     

    4.使用typedef为已有结构体类型取“别名”

    一般形式如下:

    typedef struct

    {

    <成员列表>

    }<别名>;

    这里的别名就相当于结构体类型名,之后就可以使用它定义结构体变量了

    eg:

    typedef struct

    {

    <成员列表>

    }STU;

    STU student1,student2;

    那么这里就定义了俩个结构体变量student1,student2

     

    二、结构体引用

    1.通过“ · ”引用

    结构体变量名.成员名

    注:注意结构体变量名与成员名之间有点

     

    2.通过“->”引用

    结构体指针变量名->成员名

    展开全文
  • 静态变量与动态变量的定义与区别

    千次阅读 2019-01-23 13:14:33
    动态变量和静态变量的定义和区别如下: 1.定义上,静态变量比动态变量在多一个关键字static,比如: 动态变量::int i; 静态变量:static int i; 2.动态变量在子程序中,每次调用都会从它的初始值开始调用,而...
  • JavaScript变量的定义和使用

    千次阅读 2018-09-03 21:57:59
    06-JavaScript基础-变量的定义和使用 JS中变量的定义 定义变量的目的 在内存中分配一块存储空间给变量,方便以后存储数据。 如何定义变量? 定义变量(声明变量),任何变量在使用之前,必须先进行定义 如果...
  • vue中关于变量的定义

    万次阅读 2018-07-26 14:02:37
    vue中有4种变量的定义 1data data中定义的变量是我们需要去维护的,会被多次改变或者使用到 2computed computed中计算属性中的定义的变量会被自动计算 需要注意的是computed中的变量不能在data中定义,会...
  • 函数中的声明和变量的定义

    千次阅读 2019-04-14 19:44:13
    函数中的声明和变量的定义声明与定义比较前向引用函数属性内部/内嵌函数函数应用:打印图形和数学计算变量作用域全局变量与局部变量局部变量全局变量globa语句可变类型的全局变量 声明与定义比较 ​ 在某些编程语言...
  • Sass变量的定义和调用

    千次阅读 2018-12-21 09:39:00
    Sass变量的定义 声明变量的符号“$” 变量名称 赋予变量的值 变量的分类 变量可以大致分为普通变量;还有默认变量,也就是在后面添加一个!default;全局变量;局部变量。 普通变量: $fontSize:12px; body{...
  • STM32全局变量的定义和声明

    千次阅读 2020-03-19 17:04:11
    STM32全局变量的定义和声明 今天在写SysTcik_Handler()这个中断函数时,总是报错,明明在开头定义的全局变量extern u16 ntime,(ntime–写在stm32f10x_it.c的systick中断函数中)但是编译时总是报错,百度之后才有...
  • jsp页面公共变量的定义

    千次阅读 2018-09-14 15:06:46
    jsp页面公共变量的定义 项目根目录的获取 jsp页面公共变量的定义 项目根目录的获取 定义代码: &lt;% String basePath = request.getScheme() + "://" + request.getServerName() + "...
  • 微信小程序变量的定义和使用

    千次阅读 2020-03-02 10:22:28
    变量的定义和使用 在小程序中对应的.js文件里面的data区块定义变量,然后在对应的.wxml页面使用变量。下面通过案例来讲解。 .js文件中变量的定义示例如下: data: { myvar01: "我是变量01", myvar02: "我是变量02...
  • C语言:指针变量的定义与引用

    千次阅读 多人点赞 2019-08-23 11:27:06
    一、指针变量的定义和赋值 1、格式:类型名 *指针变量名; 2、举例 int *p1; char *s1, *s2; float *a1, *a2, f; 3、说明 a. 类型名:指针变量所指向的变量类型。 b. * 是定义指针变量的标志,不可丢掉...
  • JavaScript中变量的定义方式

    千次阅读 2016-05-28 23:31:10
    在JavaScript中,变量的定义方式主要有两种,一种是隐式定义,另一种是显式定义。 隐式定义是直接给变量赋值,如c=3;a="hello"; 显示定义是用var关键字来定义,声明时变量可以没有初始值,并且变量的类型也是不确定...
  • Makefile中变量的定义及使用

    千次阅读 2018-04-30 16:54:36
    Makefile中变量的定义及使用CC := gcc TAGRET := hello.out $(TARGET): func.o main.o $(CC) -o $(TARGET) func.O 上述Makefile中第一二行依次定义了变量CC、TARGET,第四五行引用了这两个变量,引用变量采用"$...
  • 新版的ApiPost(Chrome拓展V2.0.8+/客户端V2.2.1+)已经支持环境变量的定义和使用。 本文主要介绍ApiPost环境变量的第一课:如何定义环境变量,并如何使用它。 ApiPost简介: ApiPost是一个支持团队协作,并可...
  • uni-app全局变量的定义和更改

    千次阅读 2019-08-14 14:47:56
    uni-app 全局变量的定义和更改 转自原文链接 侵删
  • 变量的定义和声明的区别详解

    千次阅读 2015-08-31 14:39:21
    感言:我马上大三了,对计算机也算是有点感兴趣,但一直以来我对变量的定义和声明都很模糊,最开始看书上是这样讲的:定义-->就形如 int a;这就是定义了一个整形变量,然后就说变量的定义只能是一次而声明却可以多次...
  • c语言与指针——(二)指针变量的定义与赋值

    万次阅读 多人点赞 2017-12-14 18:15:52
    由上一节,我们知道了,指针就是...1.指针变量的定义  指针的定义依然遵循先定义后使用的原则,在使用前必须先定义,指定其类型编译器再据此为其分配内存单元。  定义指针变量的一般格式:  类型标识符 * 指针变量名
  • 局部变量和成员变量的定义和区别

    千次阅读 多人点赞 2018-06-23 15:38:07
    局部变量和成员变量的区别和定义 局部变量 成员变量 定义位置: 方法或方法的内部 类的内部,方法的外部 默认值: 无默认值 字面值,(与数组相同)的默认值 使用范围: 从定义行到...
  • 整型变量的定义使用.c

    千次阅读 2018-11-21 17:36:29
    整型变量的定义和混合使用 #include&lt;stdio.h&gt; void main(){ int a,b,c,m,n; a=10; b=-20; c=6; m=a+c; n=b+c; // printf("m=%d\nn=%d\n",m,n); // printf("m=%d,n=%d\n",m,...
  • shell变量的定义和类型

    万次阅读 2017-10-22 22:31:11
    shell 变量定义变量shell在定义变量的时候,变量名与变量之间不能存在空格,这个大多数的语言的这个不同还是蛮大的,不过定义的规则就其他的语言定义的规则大致相同了。
  • MySQL中变量的定义和变量的赋值使用

    千次阅读 2018-03-23 09:44:28
    说明:现在市面上定义变量的教程和书籍基本都放在存储过程上说明,但是存储过程上变量只能作用于begin...end块中,而普通的变量定义和使用都说的比较少,针对此类问题只能在官方文档中才能找到讲解。前言MySQL存储...
  • 全局变量的定义和使用

    万次阅读 2018-07-05 18:46:36
    extern说明符说明该变量可作为一个外部变量使用,在某个文件中定义了该变量后,使用变量时加上extern说明符,然后添加头文件。(在头文件中定义不加extern,在源文件使用前加extern再定义。否则出错) 头文件和源...
  • mysql 存储过程中变量的定义与赋值操作 作者: 字体:[增加 减小] 类型:转载 昨天我们讲了mysql存储过程创建修改与删除,下面我们这篇教程是讲关于mysql存储过程中变量的定义赋值操作哦。 ...
  • mysql中各种类型变量的定义以及赋值使用该文总体框架http://www.cnblogs.com/zhuawang/p/4090916.html第一节http://blog.csdn.net/seteor/article/details/17682551MySQL存储过程中,定义变量有两种方式: 1....
  • C语言中全局变量的定义及重复包含问题  C语言中一般将全局变量intA的定义和初始化放在fileName .c或者其它 xx.c文件中,同时在与之对应的fileName.h文件中进行 extern int A声明。当一个全局变量int A仅在fileName...
  • delphi 全局变量的定义与初始化赋值

    千次阅读 2016-10-01 14:53:48
    delphi全局变量的定义与赋值主要有下面几种方法: 1. 全局变量的初始化 在最后结束的end.之前,增加initialization关键字,然后加入对全局变量的初始化,这样就可以初始化全局变量了.不论在interface还是在...
  • 枚举变量的定义

    千次阅读 2014-11-18 01:33:36
    枚举变量有不同方法定义,设有变量

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 291,449
精华内容 116,579
关键字:

变量的定义