精华内容
下载资源
问答
  • 一 指向变量的常指针 形式: 类型名 * const 指针变量名 将指针变量声明为const型,这样指针变量始终保持为初值,不能改变,即其指向不能改变 例 #include #include int main() { char cBuff1[100] = "1234...

    一 指向变量的常指针

    形式: 类型名 *   const  指针变量名

    将指针变量声明为const型,这样指针变量始终保持为初值,不能改变,即其指向不能改变

    #include <stdio.h>
    #include <string.h>
    
    
    int main()
    {
        char cBuff1[100] = "1234";
        char cBuff2[100] = "5678";
    
        char * const pcPt = cBuff1;//合法
        //pcPt = cBuff2; // 非法
        printf("%s\n", pcPt);
       
        return 0;
    }
    
    常指针pcPt已经指向了cBuff1,就不能再指向cBuff2了。


    注意:虽然常指针只能始终指向同一个变量,但可以改变其所指向变量的值

    例:

    #include <stdio.h>
    #include <string.h>
    
    int main()
    {
        char cBuff1[100] = "1234";
        char cBuff2[100] = "5678";
    
        char * const pcPt = cBuff1;//合法
        //pcPt = cBuff2; // 非法
        printf("%s\n", pcPt);
    
        pcPt[0] = '3';
        printf("%s\n", pcPt);
        printf("%s\n", cBuff1);
            
        return 0;
    }

    运行结果:

    可以看出pcPt和cBuff1的值被改变了。


    通常用常指针作为函数的形参,目的是不允许在函数执行过程中改变指针变量的值,使其始终指向原来的对象。

    例:

    #include <stdio.h>
    #include <string.h>
    
    int func(char * const _pcPt)
    {
        char cBuff3[100] = "9876";
        _pcPt = cBuff3; //非法
        printf("%s\n", _pcPt);
    
        return 0;
    }
    
    int main()
    {
        char cBuff1[100] = "1234";
        char cBuff2[100] = "5678";
    
        char * const pcPt = cBuff1;//合法
        //pcPt = cBuff2; // 非法
        printf("%s\n", pcPt);
        func(cBuff1);
        
        return 0;
    }
    

    此程序是编译不过的,是因为在func函数中,_pcPt改变了指向,所以导致出错;


    二 指向常变量的指针变量

    形式:const  类型名 *指针变量名;

    表示指针变量指向的变量是常变量,不能通过指针变量来改变其值。

    (1)如果一个变量已被声明为常变量,只能用指向常变量的指针变量指向它,而不能用一般的(指向非const型变量的)指针变量去指向它。

    #include <stdio.h>
    #include <string.h>
    
    int main()
    {
        const char cBuff1[100] = "1234";
        char cBuff2[100] = "5678";
    
        const char *pcPt;
        pcPt = cBuff1;
        printf("%s\n", pcPt);
    
        pcPt = cBuff2;
        printf("%s\n", pcPt);
    
        cBuff2[0] = '3';
        printf("%s\n", pcPt);
        printf("%s\n", cBuff2);
    
        //pcPt[0] = '3';  //非法,不能通过指针变量改变变量的值
    
        //char *pcPt2 = cBuff1;  //非法,不能用非const指针变量去指向常变量
          
        return 0;
    }
    
    (2) 指向常变量的指针变量除了可以指向常变量,还可以指向未被声明为const的变量,此时不能通过此指针变量改变该变量的值。

    如果不是通过指针变量访问,则变量的值是可以改变的。

    代码中的pcPt = cBuff2;

    cBuff2[0] = '3';

    说明了此原理。


    (3) 如果函数的形参是指向普通(非const)变量的指针变量,则实参只能用指向普通(非const)变量的指针,而不能用指向const变量的指针。


                                                                                        用指针变量作形参和实参的对应关系

    形参 实参 是否合法 改变指针所指向的变量的值
    指向非const型变量的指针 非const变量的地址 合法 可以
    指向非const型变量的指针 const变量的地址 非法 /
    指向const型变量的指针 const变量的地址
    合法 不可以
    指向const型变量的指针 非const变量的地址 合法 不可以





    展开全文
  • 符号常量变量的区别 定义符号常量:#define PI 3.1415926 //注意后面没有分号 定义常变量 :const float PI=3.1415926; 区别: 常变量:变量的特征是存在一个以变量名命名的存储单元,在一般...
    符号常量与常变量的区别

     

    定义符号常量:#define PI 3.1415926               //注意后面没有分号
    定义常变量  :const float PI=3.1415926;
     
    区别:
     
    常变量:变量的特征是存在一个以变量名命名的存储单元,在一般情况下,存储单元中的内容是可以变化的。而对于常变量,在变量的基础上加了一个限定:存储单元中的内容不允许变化,仍然是有存储单元的。
     
    符号常量:是使用一个字符串代替程序中出现的一个标识符,是编译时把所有的符号常量都替换成制定的字符串,在内存中也不存在一符号常量命名的存储单元。在其作用域内其值不能改变和赋值。

    转载于:https://www.cnblogs.com/liweilijie/p/4794934.html

    展开全文
  • 1 指向对象的常指针变量与指向对象指针变量区别  Time * const p; //指向对象的常指针变量 p值(p指向)不能修改  const Time *p; //指向对象指针变量,p指向类对象值不能通过p来修改 1.1 ...

    1 指向对象的常指针变量与指向常对象的指针变量区别

      Time * const p; //指向对象的常指针变量  p的值(p的指向)不能修改

      const Time *p;  //指向常对象的指针变量,p指向的类对象的值不能通过p来修改

    1.1 指向对象的常指针变量

    将指针变量声明为const型,这样指针变量始终保持初值,不能改变,即其所指向不变。

    Timet1(10,12,15),t2;

    Time *const ptr1; //const位置在指针变量名前面,指定ptr1是常指针变量

    ptr1 =&t1; //ptr1指向对象t1,此后不能再改变指向

    ptr1 =&t2; //错误,ptr1不能改变指向

     

    注意:指向对象的常指针变量的值不能改变,即始终指向同一个对象,但可以改变其所指向对象(如t1)的值。

    什么时候需要用指向对象的常指针呢?如果想将一个指针变量固定地址与一个对象相联系(即该指针变量始终指向一个对象),可以将它指定为const型指针变量。这样可以防止误操作,增加安全性。

    往往用常指针作为函数的形参,目的是不允许在函数执行过程中改变指针变量的值,使其始终指向原来的对象

     

     

    1.2 指向常对象的指针变量

    指向常对象的指针最常用于函数的形参,目的是在保护形参指针所指向的对象,使它在执行过程中不被修改。

    ……

        int main()

        {

            void fun(const Time *);//函数声明,形参是指向常对象的指针变量

            Time t1(10,13,56);

            fun(&t1);              //实参是对象t1的地址

        

            return 0;

        }

       

        void fun(const Time *p)  //定义fun函数

        {

            p->hour = 18;         //错误

            cout<<p->hour<<endl;

        }


    展开全文
  • 它用来存放数据,也就是存救变量的值。在程序运行期间,变量的值是可以改变的。变量必须先定义,后使用①。在定义时指定该变量的名字和类型。一个变量应该有一个名字,以便被引用。请注意区分变量名和变量值这两个...

    1.变量

    变量代表一个有名字的、具有特定属性的一个存储单元。它用来存放数据,也就是存救变量的值。在程序运行期间,变量的值是可以改变的。

    变量必须先定义,后使用①。在定义时指定该变量的名字和类型。一个变量应该有一个名字,以便被引用。请注意区分变量名和变量值这两个不同的概念,图3.3中a是变量名,3是变量。的值,即存放在变量a的内存单元中的数据,变量名实际上是以一个名字代表的一个存储地址,在对程序编译连接时由编译系统给每一个变量名分配应的内存地址。从变量中取值,实际上是通过变量名找到相应的内存地址,从该存储单元中读取数据。

    2.常变量

    C99允许使用常变量,方法是在定义变量时,前面加一个关健字cont,如:const int a3;

    定义:为一个整型变量,指定其值为3,雨且在安量存在期间其值不能改变。

    常变量与常量的异同是:常变量具有变量的基本属性:有类型,占存储单元,只是不允 许改变其值。可以说,常变量是有名字的不变量,面常量是没有名字的不变量。有名字就便于在程序中被引用。

    请思考:常变量与符号常量有什么不同?如,

    s definr Pi 3.1415926

    /定义符号常量

    const float pi-3,1415926

    /定义常变量

    符号常量和常变量pi都代表3.1415925.在程序中都能使用。但二者性质不同:定义符 号常量用#define指令,它是预编译指令,它只是用符号常量代表一个字符申,在预编译时仅进行字符替换,在预编译后,符号常量就不存在了(全置换成3.1415926了),对符号常量的名字是不分配存储单元的。而常变量要占用存储单元,有变量值,只是该值不改变而已。 从使用的角度看,常变量具有符号常量的优点,而且使用更方便,有了常变量以后,可以不必多用符号常量。 誓说明:有些编译系统证未实现C99的功能,因此不能使用常变量。

    61b1cbebdc2311c16e09a9b477e465c3.png
    展开全文
  • 常变量与符号变量的理解: #define Pi 3.1415926 //定义符号常量 const float pi = 3.1415926 //定义常变量 定义符号常量用#define指令,它是预编译指令它只是用符号代表一个字符串,在预编译时仅是进行字符的替换,...
  • <blockquote>定义符号常量:#define PI 3.1415926 //注意后面没有分号 定义常变量 :const float PI=3.1415926;</blockquote>...常变量变量的特征是存在一个以变量名命名的存储...
  • C 语言中符号常量与常变量的区别

    千次阅读 2013-10-21 13:33:42
    符号常量 pi 和常变量 PI 都代表3.1415926,在程序中都能使用,只是二者性质有所差别,定义符号常量使用#define 指令,是预编译指令,只是使用一个符号常量代表一个字符串,在预编译是仅仅进行字符替换,子啊预...
  • 宏常量与常变量

    2020-06-05 08:10:42
    宏常量 形式: #define pi 3.1415926 优点: 含义清楚、见名知意;修改方便,一改全改。 常变量 ...3.常变量与直接常量的异同:常变量有变量的基本属性,有数据类型,会...4.常变量与宏常量的区别:常变量有数据类型,而
  • 在C/C++编程时,经常遇到以下几个概念:常量、文字常量、符号常量、字面常量、常变量、字符串常量和字符常量,网上博客资料也是千篇千律,不尽相同,弄得大家云里雾里。本文将尝试为大家捋清楚以上易混淆概念定义...
  • 属性与变量的区别

    2020-08-14 21:52:12
    属性是变量的附加解释,某变量可以称作属性,java,c#等面向对象语言环境使用较多。 例如面向对象编程写一个学生类,里面有name,age等变量;我们就可以称name是学生类名字属性age是学生类年龄属性。 也可以把学生类...
  • C99允许常变量,如const int a =3,常变量具有变量属性:有类型,占存储单元,只是不允许改变其值,即有名字不变量,而常量是没有名字不变量 符号常量用#define指令,在预编译是仅进行字符替换,预编译后,符号...
  • equals和==的区别 1.简单了解JVM中内存分配 1)JVM内存结构 JVM的运行时数据区主要包括堆,栈,方法区和程序计数器,其中栈分为虚拟机栈和本地方法栈。 A)程序计数器: 简单来说程序计数器是当前线程所执行字节码...
  • 常量与变量(必须牢牢掌握)1、常量1)、定义在程序执行过程中,其值不发生改变量。2)、分类A:字面值常量B:自定义常量(后面讲)3)、字面值常量A:字符串常量 "hello"B:整数常量 12,23C:小数常量 12.345D:字符...
  • C/C++文字常量与常变量

    千次阅读 2015-06-10 22:56:58
    在C/C++编程时,经常遇到以下几个概念:常量、文字常量、符号常量、字面常量、常变量、字符串常量和字符常量,网上博客资料也是千篇千律,不尽相同,弄得大家云里雾里。本文将尝试为大家捋清楚以上易混淆概念定义...
  • 标签:wirereg类型的区别:wire型数据用来表示以assign关键字指定的组合逻辑信号。模块的输入输出端口类型都默认为wire型。默认初始值是z。reg型表示的寄存器类型。always模块内被赋值的信号,必须定义为reg型,...
  • 对象说明:对象是指对象数据成员值在对象被调用时不能被改变。对象必须进行初始化,且不能被更新。不能通过对象调用普通成员函数,但是可以通过普通对象调用成员函数。对象只能调用成员函数。...
  • 先看一个初学python阶段最遇到且最易混用问题:对NONE判断语句使用:list_a = []list_a == NONElist_a is NONE# 这里的确都能正确输出# 但规范使用应该用 is NONE按照python推荐,这里我们当然是应该用 is ...
  • ***静态变量*** static 为了节省空间,实现数据共享,保证数据一致性。 ***常量成员*** const 为了保证无法修改 有些数据需要被共享,但是也不能被修改,用此定义为常量(类似于#define) 只能在初始化时候...
  • 经常会有学弟问我,在API编程的时候,很多时候windows.h里或者其他库里的常数系统变量的“ 位或 |”运算和 “算术运算 +”是没有区别的。而我们知道 | 和+还是有区别的。比如 MessageBox(NULL,"``","caption",MB_OK+...
  • 参考:... ... wirereg类型的区别: wire型数据用来表示以assign关键字指定的组合逻辑信号。模块的输入输出端口类型都默认为wire型。默认初始值是z。 reg型表示的...
  • 1.define用来定义一个常量,常量也是全局范围...define("path","root/www/web")define为root/www/web 为常量值 2.defined用来检测常量有没有被定义,若常量存在,则返回true,否则返回 false如: [html]vie...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 504
精华内容 201
关键字:

常变量与变量的区别