zoukankan      html  css  js  c++  java
  • 常量指针与指针常量的区别

            这个老是容易搞混,以前很清楚,但过一段时间不用,又忘了,因此今天整理成博客,以备以后查询。

    const  char *类型的指针(指向常量的指针),其所指向的内容为常量,是不可以修改的,但其指针值是可以修改的。

     例如   char str[]="hello";      //定义一个字符数组

             const char *pStr=str;  //把地址赋给指针常量

            *pStr='w';//  error

             pStr=“world”;  //right

              pStr被定义为指针常量,即它指向的字符串是常量,不可以修改,但pStr本身为指针,表示一个地址值,可以修改指向其他地址。

    char* const 类型的指针(常量指针),其地址值是一个常量,不可以修改,但其指向的内存值可以修改。

     例如    char str[]="anything";   //定义一个字符数组

               char*const pStr=str;       //把地址赋给常量指针

               *pStr="k";  //right

                pStr="null";  //error

                pStr被定义为常量指针,即它的值,所指向的内存首地址是不可以修改的,但是其所指向的字符串是可以修改的。

               写到这,我又感觉到学好语文多么重要。语文素养高可以帮助我们很多,最直接的是帮助我们理解字面的含义。比如常量指针,和指针常量。首先,常量指针,可以这么理解,常量二字修饰的是指针,即指针(地址)是常量,不可以修改;指针常量,可以这么理解,指针修饰的是常量,即指针所指向的内容不允许修改。

               另外,在传递函数形参时,如果我们不想形参修改我们传递的字符串,可以把形参定义为指针常量,即const char *类型。

               例如  void   fun(const char * pStr){};

             

              

              

               

             

  • 相关阅读:
    为什么要用webUI?
    探索WebKit内核(一)------ 菜鸟起步
    主进程退出的时候,杀死所有子进程
    那两年炼就的Android内功修养
    飞鸽---局域网聊天软件攻防战
    如何利用Fluxion诱惑目标用户获取WPA密码
    性能测试:CPU内存,硬盘IO读写,带宽速度,UnixBench
    解决maven编译错误:程序包com.sun.xml.internal.ws.spi不存在
    Apache-Flink深度解析-DataStream-Connectors之Kafka
    linux下find(文件查找)命令的用法总结
  • 原文地址:https://www.cnblogs.com/xshang/p/2996347.html
Copyright © 2011-2022 走看看