精华内容
下载资源
问答
  • C语言中的变量与常量

    千次阅读 2020-05-24 14:40:55
    变量与常量 1.变量与常量   在整个程序的运行过程中,没有变化且不能变化的,我们称之为常量。在程序运行期间,可能会改变或者被赋值的,我们称之为变量。 2.声明变量   在前面的几章中,我们已经看过如何...

    变量与常量

    1.变量与常量

      在整个程序的运行过程中,没有变化且不能变化的,我们称之为常量。在程序运行期间,可能会改变或者被赋值的,我们称之为变量。

    2.声明一个变量

      在前面的几章中,我们已经看过如何声明一个变量了。

    short s;
    int n;
    long l;
    float f;
    double d;
    

      声明变量的公式:类型 + 标识符 + 封号

      即可声明一个变量。

      必须先声明变量后,才能使用变量。

    正确, 变量使用前被声明了。

    //  正确
    #include <stdio.h>
    int main()
    {
        int a;
        printf("%d\n", a); //  正确, 变量使用前被声明了。
        return 0;
    }
    

    错误, 变量a未声明。

    //  错误
    #include <stdio.h>
    int main()
    {
        printf("%d\n", a); //  错误, 变量未声明。
        return 0;
    }
    

    错误, 变量a在声明前使用。

    //  错误
    #include <stdio.h>
    int main()
    {
        printf("%d\n", a); //  错误, 变量在声明前使用。
        int a;
        return 0;
    }
    

    3. 变量允许使用的字符

      声明变量的公式:类型 + 标识符 + 封号

      标识符由大小写字母,数字和下划线组成。标识符不能以数字开头,并且必须与现有的关键词不同。

    short apple; 正确
    int 88fruit; 错误,不能以数字开头
    long _pencil; 正确,可以以下换线或字母开头
    float love_you; 正确,字母开头,标识符可以使用下划线
    double int; 错误,不能与现有关键词相同
    

    TIPS:

      关键词是被编译器识别的,具有特殊意义的单词。在C语言标准中,关键词如下表所示。它们在C语言当中,都有具体的语法意义。例如int,代表一个整型数据类型,return代表函数结束并带回返回值。

    auto_Bool*breakcase
    char_Complex*constcontinue
    defaultrestrict*dodouble
    elseenumexternfloat
    forgotoif_Imaginary*
    inline*intlongregister
    returnshortsignedsizeof
    staticstructswitchtypedef
    unionunsignedvoidvolatile
    while


    4. 变量初始化和赋值

      我们思考一下,下面的代码,它的打印出来的数值是多少呢?

    #include <stdio.h>
    int main()
    {
        int a;
        printf("%d\n", a);
        return 0;
    }
    

      我们发现,它居然报错了!

    uninit

      这段代码,在Visual Studio 2019中这段代码已经无法编译成功了。为什么呢?因为a没有被初始化,也没有被赋值。它的值是一个随机值。这样很危险,有可能导致程序产生错误的结果。因此,在Visual Studio 2019中已经禁止使用了。早期的版本你可以看到a的值是一个无意义的随机值。

      以下两种是正确的写法

      写法1:变量声明后,立刻初始化为100。

    #include <stdio.h>
    int main()
    {
        int a = 100; //  变量声明后,立即装入100。
        printf("%d\n", a); 
        return 0;
    }
    

      写法2:变量声明后,不初始化。后续使用赋值运算符赋值。

    #include <stdio.h>
    int main()
    {
        int a; //  变量声明后,为一个随机值
        a = 100; // 这里我们使用赋值运算符,将100给了a。
        printf("%d\n", a); 
        return 0;
    }
    

      另外,请注意:变量可以多次赋值,但是不能被多次初始化。多次初始化就相当于你重复定义了一个变量了。

    //  正确,将输出100,200。
    #include <stdio.h>
    int main()
    {
        int a; 
        a = 100; 
        printf("%d\n", a); 
        a = 200;
        printf("%d\n", a); 
        return 0;
    }
    
    //  错误,变量被声明过一次了。
    #include <stdio.h>
    int main()
    {
        int a; 
        a = 100; 
        printf("%d\n", a); 
        int a = 200; 
        printf("%d\n", a); 
        return 0;
    }
    

    5. 初始化和赋值的区别

      乍一看,初始化好像就是把变量声明和赋值写在一起了。对于整型和浮点变量确实如此。但是,对于后面将见到的其他类型,会略有不同。请区别对待初始化和赋值,这两个概念。

    6. 常量

      字面常量是程序中,一开始就被写死在代码中,且不能被改变的量。

    6.1 字面常量

      例如:100,200,1.3344,“HelloWorld”,被称之为字面常量。

    100 = 101;
    错误,常量不能被更改
    
    100 = a;
    错误,常量不能被更改
    

      字符串字面常量,被括号包裹的被称之为字符串常量。

    "HelloWorld"
    
    "HelloWorld" = "你好";
    错误,常量不能被更改
    

    6.2 符号常量

      假设我们有一个商品的价格price,目前为3元。现在我们要计算,10件这个商品的价格。

    #include <stdio.h>
    
    # define PRICE 3
    
    int main()
    {
    	int num = 10;
    	int total;
    	total = num * PRICE;
    	printf("total:%d", total);
    	return 0;
    }
    

      我们并没有直接写num * 3,而是定义了一个符号常量PRICE。这样做有什么好处呢?比如,我们这个程序很大,并且商品的价格被用在很多函数里面,不仅仅是main函数里。但是有一天,这个商品的价格变了。那么修改起来会很麻烦,这时呢。如果我们把商品的价格定义为符号常量,这样只要修改这个符号常量所代表的值即可了。

      定义符号常量的公式:

    #define 符号常量 值
    

    在这里插入图片描述

    展开全文
  • final 函数 变量 常量 命名规则

    千次阅读 2014-09-27 16:38:07
    4,final修饰的变量是一个常量,只能赋值一次。 为什么要用final修饰变量。其实在程序如果一个数据是固定的, 那么直接使用这个数据就可以了,但是这样阅读性差,所以它该数据起个名称。 而且这个变

    继承弊端:打破了封装性。


    final关键字:

    1,final是一个修饰符,可以修饰 类,函数,变量。

    2,final修饰的类不可以被继承。
    3,final修饰的方法不可以被覆盖。

    4,final修饰的变量是一个常量,只能赋值一次。

    5,内部类定义在类中的局部位置上时,只能访问局部类被final修饰的局部变量。

    final修饰变量

    为什么要用final修饰变量。其实在程序如果一个数据是固定的,

    那么直接使用这个数据就可以了,但是这样阅读性差,所以它该数据起个名称。

    而且这个变量名称的值不能变化,所以加上final固定。

    写法规范:常量所有字母都大写,多个单词,中间用_连接。

    class Zi
    {
    	public static final double MY_PI = 3.14;
    	static final int x = 7;
    
    	void method()
    	{
    //		final int x = 9;
    //		x = 9;
    		final int NUMBER = 9;
    		
    		System.out.println(MY_PI);
    	}
    }
    


    函数 和 变量  起名字,首字母小写第二个单词首字母大写

    常量 所有字母都大写 NUMBER

    当多个单词时,下划线连接  MY_PI



    展开全文
  • 变量常量函数

    2014-06-23 17:11:39
    1、使用typedef来创建别名 eg:typedef unsigned short int ...3、将个字符(如字母a)赋给char变量时,该变量实际存储的是个0~255的ASCII码数值。 4、转义字符:\a响铃 \b退格 \f换页 \n换行 \r 回车 \t 制表 \

    1、使用typedef来创建别名 eg:typedef unsigned short int USI;

    2、unsigned整型变量的回绕:溢出后从0开始,signed整型变量的回绕:溢出后从最小负数开始。

    3、将一个字符(如字母a)赋给char变量时,该变量实际存储的是一个0~255的ASCII码数值。

    4、转义字符:\a响铃  \b退格 \f换页  \n换行  \r 回车 \t 制表 \v 垂直制表 \'  单引号 \"双引号  \?问号 \\ 反斜杠 \000八进制表示 \xhhh十六进制表示

    5、c++中有两种声明符号常量的方法:1)传统方法,用#define,现已摒弃 2)更合适的方法是使用关键字const

    6、#define stuPerClass 15 没有指定stuPerClass的类型,预处理器进行简单地文本替换,无法进行类型安全检查;由于预处理器在编译器之前运行,因此编译器只能看到15,而看不到常量stuPerClass,不便调试。const unsigned short int stuPerClass=15;  这种声明使程序易于维护和防止错误,最大的不同在于,该常量有类型,使得编译器能根据类型确保它被正确使用。

    7、创建枚举常量:enum COLOR  {RED, BLUE, GREEN, WHITE, BLACK}; 

          COLOR为枚举名,若不特别指定,第一个常量(RED)值为0,其余常量值依次加1;若将其中任一常量初始化为特定值,则其后未被初始化的默认加1。eg:enum COLOR {RED=100, BLUE, GREEN=500, WHITE, BLACK=700}; 则BLUE=101,WHITE=501

    8、枚举常量的类型是unsigned int

    9、一个枚举常量的例子:

        main(){  
        enum weekday  
       {
        sun,mon,tue,wed,thu,fri,sat
       } a,b,c;  
       a=sun;  
       b=mon;  
      c=tue;  
      printf("%d,%d,%d",a,b,c);
      }  
        /*说明:  只能把枚举值赋予枚举变量,不能把元素的数值直接赋予枚举变量。如:  
        a=sun;  
        b=mon;  是正确的。
        而:  a=0;  b=1;  是错误的

    10、关于函数的全局变量和局部变量需要注意的几点:

        1)定义在全体函数外的变量为全局变量,任何函数都可用

        2)定义在函数内的变量为局部变量,作用域为该函数。定义在函数内一个语句块(一对大括号之间)的变量作用域为该语句块。

        3)传入函数的参数为函数中的局部变量。

        4)与全局变量同名的局部变量不会修改全局变量(称为按值传递),但会隐藏它,即在该局部变量作用域内显示的是局部变量的值。注意一下一个例子:


    11、函数原型可声明默认参数,eg: long func(int x=50); 或 long func(int =50); 调用函数时若没有提供参数则采用默认值50。

           注意:若某个参数没有默认值,则它前面的所有参数都不得有默认值。eg:

          函数声明: long func(int param1, int param2, int param3); 若param3没有赋默认值,则param1、2也不得有默认值。

    12、函数重载也叫函数多态(polymorphism)重载函数必须有不同的参数类型、参数个数或兼而有之。重载函数的返回类型可以相同也可以不同。

           注意:如果两个函数的函数名和参数列表都相同,只有返回类型不同,不算函数重载,将导致编译错误。

    13、内联函数直接将函数代码赋值到调用函数中,这样调用函数时便不需要跳转,有助于提高效率。内联函数在函数声明前加上inline。

           注意:如果内联函数调用次数多,内联代码将被复制到每一次调用处,这样,可执行程序变大了,速度可能变得更慢。因此除非函数只          有一两条语句,否则不要将函数声明为内联。如果没有把握,不要轻易使用关键字inline。

    展开全文
  • Java 中变量与常量的生命周期

    千次阅读 2017-12-28 14:23:00
    创建了一个内部内对象,并为其常量赋值,然后又一次常量进行了赋值,两次赋值都成功了。有同学提出疑惑,于是老师说到了栈内存以及内部变量常量的生命周期问题。 之前也提到过很多次关于这个“生命周期...

    今天在复习视频的时候看到了内部类中,关于定义在局部的内部类要访问局部变量时,需要该变量被final所修饰,然后老师演示了一个现象。


    创建了一个内部内对象,并为其常量赋值,然后又一次对常量进行了赋值,两次赋值都成功了。有同学提出疑惑,于是老师说到了栈内存以及内部变量和常量的生命周期问题。


    之前也提到过很多次关于这个“生命周期”的问题,于是就想到了写篇东西整理一下。


    首先解释一下变量和常量的概念


    变量是内存中开辟的一块存储区域,用于记录和存储不断变化的数据的值。

    变量有固定的定义格式,当我们在进行运算和操作时,发现有部分数据会不断发生变化,而我们又需要重复操作这部分数据时,就可以定义一个变量将其进行记录。


    常量也是一块存储区域,在定义常量时会进行一次赋值,之后一直到常量的生命周期结束,该常量的值都不会被改变及被第二次赋值。


    然后是关于生命周期


    所谓生命周期,也有说法叫做作用域。是指常量和变量都有自己固定的生效范围,一旦在这个范围之外将失去效用。生命周期一般以区间作为界限,即{}


    另外的,关于不同类型的常量或变量在内存中都有自己的存储空间,在这里涉及到的三片内存空间也进行一下简单的说明:


    栈内存:

    这片内存最大的特点是内部数据的生命周期都很短,数据在生命周期结束之后会自动释放。

    主要用于存放局部变量,局部常量。


    堆内存:

    数组和对象,以及引用指向的实体都被存放在这片内存当中。相对栈内存而言,这片内存内的数据的生命周期就由调用者进行指定。除非内部数据不再被栈引用指向了,否则会一直存在于这片内存空间当中。


    而当内部实体不再被指向之后,实体所占用的内存空间也不会被立即释放,而是在不定时的时间范围内被Java自带的垃圾回收机制所回收。


    成员变量,实例变量的特点:



    成员变量:


    作用范围:整个类;

    初始化值:有默认初始化值;

    实例变量:


    作用范围:由new创建的实体内部;

    初始化值:有默认初始化值;


    局部变量:


    作用范围:函数或语句的作用范围内部;

    初始化值:没有初始化值,必须手动指定初始化值;


    类变量:


    这是一个区别于上两者的特殊变量,存放区域也是区别于栈内存与堆内存的第三片存储区域:方法区。

    当一个变量被成员修饰符static修饰之后,即成为类变量。

    类变量的生命周期最最长,随着类的创建而创建,在实体建立之前就已经存在。

    可以直接通过类名调用。


    作用范围:整个类;

    初始化值:有默认初始化值;



    常量和final


    最后来看引发我想要写这篇日志的主要原因:


    来看这段代码:

    class Outer
    {
    	int x = 3;
    
    	void method(final int a)
    	{
    		final int y = 4;
    		class Inner
    		{
    			void function()
    			{
    				System.out.println(y);
    			}
    		}
    	
    		new Inner().function();
    		
    	}
    }
    
    
    class  InnerClassDemo3
    {
    	public static void main(String[] args) 
    	{
    		Outer out = new Outer();
    		out.method(7);//这句可以编译通过;
    		out.method(8);//这句也可以编译通过;
    	}
    
    }

    最开始造成困扰的原因是,大家都以为当yfinal修饰之后,会成为一个常量,不能进行第二次赋值。


    但实际上,y的生命周期在这段语句结束之后就已经结束了。


    void method(final int a)
    	{
    		final int y = 4;
    		class Inner
    		{
    			void function()
    			{
    				System.out.println(y);
    			}
    		}
    	
    		new Inner().function();
    		
    	}


    当第二次调用method方法时,这段代码会第二次运行,所以y可以被再次赋值。


    但如果在method方法的作用域里写上y++;这样的语句就会编译失败。

    展开全文
  • Java 变量常量

    千次阅读 2013-10-06 07:37:53
    变量常量  在程序中存在大量的数据来代表程序的状态,其中有些数据在程序的运行过程中值会发生改变,有些数据在程序运行过程中值不能发生改变,这些数据在程序中分别被叫做变量常量。  在实际的程序中,...
  • 如果个问题可以重复采用,同样的方法拆分,就可以使用递归函数解决这样的问题 递归函数编写原则 1.在函数中用语句描述出问题的拆分方法 2.在函数的开始部分使用分支把不可拆分的情况单独处理(处理完成后应该...
  • Go语言基础之变量常量

    万次阅读 2020-05-04 11:38:59
    文章目录Go语言基础之变量和常量标识符关键字标识符关键字变量变量的来历变量类型变量声明标准声明批量声明变量的初始化类型推导短变量声明匿名变量常量iota几个常见的`iota`示例: Go语言基础之变量和常量 变量和...
  • C++ 变量常量

    千次阅读 2018-03-14 20:36:17
    变量程序运行时,所需的数据要放在内存值才能使用,内存被格式化成个个小的存储单元,数据保存在这些存储单元中。这些存储单元被编上序号(内存地址)。高级语言设计的程序不能直接通过地址来访问所保存的数据...
  • [JAVA] Java 中变量与常量的生命周期

    千次阅读 2014-07-04 01:08:59
    创建了一个内部内对象,并为其常量赋值,然后又一次常量进行了赋值,两次赋值都成功了。有同学提出疑惑,于是老师说到了栈内存以及内部变量常量的生命周期问题。 之前也提到过很多次关于这个“生命周期”的...
  • Flutter(Dart)基础——变量常量

    万次阅读 2020-09-14 18:15:13
    Dart语法基础——变量常量 在 Dart 中,标识符以字母或下划线(_)开头,后跟任意字母和数字组合。 变量 使用 var 声明变量,可赋予不同类型的值。 未初始化时,默认值为 null。 变量的声明 变量用来存储对象的...
  • C和C++中全局变量,局部变量,静态变量常量

    千次阅读 多人点赞 2016-08-14 22:54:15
    C/C++中常量,静态变量,全局变量和局部变量的区别和作用。把局部变量改变为静态局部变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态全局变量是改变了它的作用域, 限制了它的使用范围。因此...
  • GO语言的变量常量

    千次阅读 2019-08-30 11:09:25
    变量 所谓变量,就是在程序运行过程中可以修改变化的“量”,用来存储一些编程过程中所用到的数据。通过变量的标识符,来确定变量所用内存空间的大小。 命名规范 ...声明变量 标准格式 声明变量的...
  • 1.在函数内部创建的变量函数来...3.函数内部使用的变量声明为全局变量时,其名称要全局变量的名称一致,在这样的情况下,我们就可以在函数中使用函数外部的全局变量了,这样就可以避免上种因为函数内部的变量与
  • Kotlin系列之变量常量

    千次阅读 2018-02-09 11:17:11
    变量 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 属性&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; varval区别 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 自定
  • 我们先来看看Java中的变量与...第一次赋值后,后面不可以再对其再次赋值。Java中的变量在程序运行中可以动态的改变其值,如int a = 1; int b = 2; a = a + b;Java类似的,Scala中对应有 val、var对应常量变量的定
  • 【Angular】变量常量声明解构

    千次阅读 热门讨论 2017-12-14 16:38:23
    常量 angular中 全局变量在类的外面,@Component()的上面声明 ... Angular中变量声明有两种方式,种是let,另种是var 作用域  let:只在块级作用域内有效  var:只在包含它的函数,模块中有效
  • PHP中的变量常量

    千次阅读 2012-03-04 19:56:05
    几乎所有的编程语言都会涉及到变量常量这两个概念,PHP也不例外。本节将介绍PHP语言中的变量常量的应用方法。 2.4.1 什么是变量常量 在程序执行的过程中,变量存储的值可以随时改变,而常量存储的值是不...
  • static 变量 作用域 全局变量 局部变量 外部变量 常量 volatile变量 2人收藏此文章, 我要收藏发表于2年前 , 已有1077阅读 共2个评论 作用域 全局变量 局部变量 静态变量 外部变量 常量 ...
  • 4.常量与引用 4.1 const的最初动机 4.2 const与指针 4.3 const与函数 4.4 const与类 4.5 引用(&amp;) 4.6 复制构造函数 3.函数重载 函数名可以看做是个操作的名字。通过这些名字,可以写出易于人们...
  • Go基础编程:命名、变量常量

    千次阅读 多人点赞 2017-09-12 09:57:27
    Go语言中的函数名、变量名、常量名、类型名、语句标号和包名等所有的命名,都遵循个简单的命名规则:个名字必须以个字母(Unicode字母)或下划线开头,后面可以跟任意数量的字母、数字或下划线。大写字母和...
  • 变量常量,静态变量存储的位置

    万次阅读 多人点赞 2013-10-12 21:34:03
    里面的变量通常是局部变量函数参数等。 2、堆 由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般个new就要对应个delete。如果程序员没有释放掉,程序会一直占用内存,导致内存泄漏...
  • 作用域全局变量局部变量静态变量外部变量常量 volatile变量 作用域:作用域规则告诉我们个变量的有效范围,它在哪儿创建,在哪儿销毁(也就是说超出了作用域)。变量的有效作用域从它的定义点开始,到...
  • ????笔者的前言 照理来说 在正常的大学里 都...注:由于笔者已经会Java了 C的一些概念和Java是相通的 因此部分变量函数之类的详细的基本概念就不在此阐述了 部分笔者已经会了的知识点和概念 或者部分C和Java重复的概念
  • Python-变量常量

    千次阅读 2010-04-01 22:20:00
    变量常量1) 变量的命名首字母必须是字母或下划线,首字符以外的字符可以由字母,数字或下划线组成。2) 变量的赋值Python中的变量不需要声明,变量的赋值操作既是变量声明...例子:# 一次新的赋值操作,将创建一个新
  • 全局变量是在所有函数体的外部定义的,程序的所有部分(其他文件的代码)都可以使用。全局变量不受作用域的影响。全局变量的生命周期一直到程序的结束,全局变量是静态存储方式。 例: #include &lt;stdio.h&...
  • 变量声明 常量声明 数组 切片Slice 前言: Go语言的设计初衷 针对其他语言的痛点进行设计 并加入并发编程 为大数据、微服务、并发而生的通用编程语言 Go语言很特别 没有“对象”,没有继承多态、类等,...
  • keil for arm中: staticconstuint8_ts_acBmpLogo030[len]__attribute__((at(0X800F000)))={0x80,0xC0,0xC0,0xC0,0xC0,0x80,xxxxxxx} 案例演示 下面我们用个例子演示一下,...将个const常量放置到0x0000100...
  • 本文涉及C++编程中变量常量的规范相关建议
  • swift语言-变量常量基本知识

    千次阅读 2015-05-02 10:56:22
    1. 函数的定义和调用1.1 函数概念函数是为了完成某种特定任务的代码块,给代码块起个有意义的名字,称之为函数名。当函数需要被执行的时候,调用这个名字就可以执行函数了。1.2 函数的分类(1)其他程序员已经封装过...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 258,550
精华内容 103,420
关键字:

一次函数变量与常量的概念