• 分享:C语言中Const指针变量(常指针)


    C语言中,指针是最难理解的一部分,尤其是Const指针变量。

    Const指针变量只保护其Value值不被改变,并不能保护指针所指向的地址中的值不被改变,下面是针对Const指针的一个小练习:

    #include "stdafx.h"

    int main(int argc, char* argv[])
    {

    //定义基本类型的const变量,const 位置在哪儿都可以
    const int x = 2,y = 3;  //两个常量
    //定义一个非const变量
    int z = 3;     //一个普通变量
    //定义一个指向常的指针
    const int* pc = &x;   //指向常量的指针
    //定义一个常指针
    int* const cp = &z;   //常指针
    //定义一个非const指针
    int* pp = &z;    //int 型指针

    // x = y;  //x 为const变量,所以x的值不可以被更改   只能做右值

    pc = &z; //可以,pc是一个指向常量的指针,不能通过该指针去修改指针所指向的内存空间的值,但是,该指针可以指向别的变量

    // *pc = 10; //不可以,*pc所指向的地址为const变量,其值不可更改 pc是一个指向常量的指针,不能通过该指针去修改指针所指向的内存空间的值
    // *pc = y; //不可以,同上
    // *pc = 5; //同上

    pc = pp; //可以,pc为指针,其值可被改变 pc是一个指向常量的指针,pp是一个普通指针,用一个普通指针给一个指向常量的指针赋值是可以的
    // pp = pc; //用一个指向常量的指针,赋值给一个普通指针,不可以。如果可以,那么就可以通过普通的指针去修改内存的值

    z = 5;  //可以,给一个非const变量赋值是可以的
    z = x;  //可以,用一个const的变量给一个非const变量赋值是可以的

    *cp = x; //可以,通过常指针去修改指针所指向变量的值,原则上来讲是可以的,如果指向的变量是const的,那么不同编译器会有不同的结果

    // cp = &x; //不可以,cp为常指针,指针的值不能被修改,给常指针赋值是错误的

    // pp = &x; //不可以,pp是非const指针,原则上来讲给它赋值是可以的,在不同的编译器下有不同的结果
    // pp = pc; //不可以,指向常量的指针不能赋值给一个普通的指针
    pp = cp; //可以,常指针可以赋值给一个普通指针

    const int * const pp = &a; //双const 既保护指针又保护内存变量
    printf("Hello World!\n");
    return 0;

    }

  • 相关阅读:
    Linux下修改Mysql的用户(root)的密码
    Mysql 用户权限管理
    mysql的四种启动方式
    MySQL慢日志的相关参数
    mysqlsla slow-query常用用法

    导包和模块注意的问题
    Python面向对象之魔法方法/双下方法
    __new__问题
    转:Python常见字符编码及其之间的转换
  • 原文地址:https://www.cnblogs.com/mylinux/p/3047719.html
Copyright © 2020-2023  润新知