美文网首页
const指针精华

const指针精华

作者: 小哥_xiaoge | 来源:发表于2022-05-19 13:04 被阅读0次
 1、先看一个普通的指针使用。
    
    形式:int *pTmp
    
    含义:一个普通的指向int类型的指针
    int main(int argc, char *argv[])
    {
        int i = 1;
        
        int  *pTmp = &i;
        printf("pTmp = %d\n", *pTmp);
        
        i = 2;
        printf("pTmp = %d\n", *pTmp);
        
        (*pTmp)++;
        printf("pTmp = %d\n", *pTmp);
        
        system("PAUSE");
        
        return 0;
    }

     输出:
     pTmp = 1
     pTmp = 2
     pTmp = 3
     请按任意键继续. . .

     
     2、
     
     形式:const int *pTmp
     
     含义:表示pTmp所指向的对象是只读的,但pTmp可指向其他地址,即pTmp可变。


     int main(int argc, char *argv[])
     {
         int i = 1;
         int j = 100;
         
         const int  *pTmp = &i; /*正确:表示pTmp所指向的对象是只读的,但pTmp可指向其他地址,即pTmp可变*/
         printf("pTmp = %d\n", *pTmp);
         
         i = 2;
         printf("pTmp = %d\n", *pTmp);
         
         pTmp = &j;            /*正确:将pTmp指向变量j的地址*/
         printf("pTmp = %d\n", *pTmp);
         
         
         (*pTmp)++; /*错误,pTmp指向的对象是只读的,编译出错提示:assignment of read-only location */
         printf("pTmp = %d\n", *pTmp);
         
         system("PAUSE");
         
         return 0;
     }
     
     
     
     
     3、
     形式:int const *pTmp
     
     含义:与2相同, 表示pTmp所指向的对象是只读的,但pTmp可指向其他地址,即pTmp可变。


     int main(int argc, char *argv[])
     {
     int i = 1;
     int j = 100;
     
     const int  *pTmp = &i; /*正确:表示pTmp所指向的对象是只读的,但pTmp可指向其他地址,即pTmp可变*/
     printf("pTmp = %d\n", *pTmp);
     
     i = 2;
     printf("pTmp = %d\n", *pTmp);
     
     pTmp = &j;            /*正确:将pTmp指向变量j的地址*/
     printf("pTmp = %d\n", *pTmp);
     
     
     (*pTmp)++; /*错误,pTmp指向的对象是只读的,编译出错提示:assignment of read-only location */
     printf("pTmp = %d\n", *pTmp);
     
     system("PAUSE");
     
     return 0;
     }
     
     
     
     
     4、
     形式:int * const pTmp
     
     含义:pTmp不可修改,但pTmp所指向的对象可以修改。


     int main(int argc, char *argv[])
     {
     int i = 1;
     int j = 100;
     
     int * const pTmp = &i;
     printf("pTmp = %d\n", *pTmp);
     
     i = 2;
     printf("pTmp = %d\n", *pTmp);
     
     pTmp = &j;  /*错误,pTmp不可修改,编译提示:error:assignment of read-only variable `pTmp'*/
     printf("pTmp = %d\n", *pTmp);
     
     
     (*pTmp)++; /*正确,pTmp所指向的对象可以修改 */
     printf("pTmp = %d\n", *pTmp);
     
     system("PAUSE");
     
     return 0;
     }
     
     
     
     
     5、
     形式:const int * const pTmp
     
     含义:pTmp不可修改,pTmp所指对象也不能修改。


     int main(int argc, char *argv[])
     {
         int i = 1;
         int j = 100;
         
         const int * const pTmp = &i;
         printf("pTmp = %d\n", *pTmp);
         
         i = 2;  /*正确*/
         printf("pTmp = %d\n", *pTmp);
         
         pTmp = &j;  /*错误:error: assignment of read-only variable `pTmp'*/
         printf("pTmp = %d\n", *pTmp);
         
         
         (*pTmp)++;  /*错误:error: increment of read-only location*/
         printf("pTmp = %d\n", *pTmp);
         
         system("PAUSE");
         
         return 0;
     }

   
6  


int main(int argc, char *argv[])
  {
      int a = 3;
      int b;
     
     /*定义指向const的指针(指针指向的内容不能被修改)*/ 
     const int* p1; 
     int const* p2; 
     
     /*定义const指针(由于指针本身的值不能改变所以必须得初始化)*/ 
     int* const p3 = &a; 
     
     /*指针本身和它指向的内容都是不能被改变的所以也得初始化*/
     const int* const p4 = &a;
     int const* const p5 = &b; 
     
      p1 = p2 = &a; //正确
      *p1 = *p2 = 8; //不正确(指针指向的内容不能被修改)
     
      *p3 = 5; //正确
      p3 = p1; //不正确(指针本身的值不能改变) 
     
      p4 = p5;//不正确 (指针本身和它指向的内容都是不能被改变) 
      *p4 = *p5 = 4; //不正确(指针本身和它指向的内容都是不能被改变) 
      
     return 0; 
}

相关文章

  • const指针精华

  • c++ 指针和引用的区别

    1. 指针有const,引用没有const 1)为了限制指针更改指向,引入了const指针(int* const ...

  • C语言-const指针

    const 指针 在普通指针类型前面,加上const修饰 例如: const 指针:区别 加不加const,有什么...

  • 5.const与指针

    1.const修饰指针-常量指针 2.const修饰常量-指针常量 3.const修饰指针和常量 代码如下

  • const指针

    const指针可以指向非const变量, 非const指针不能指向const变量 int (*p)[5] 指向...

  • const修饰指针变量/引用/对象

    const修饰指针或者指针变量的区别 分辨的规则在于从const起往右读取 被修饰的是指针还是指针变量 const...

  • NDK开发—指针、函数、预处理器(二)

    目录 指针、函数、预处理器 1、指针解引用、指针运算数组、指针const char *、 char const *...

  • 2018-12-03

    const 与 多重指针 先让我们来看const与指针的情况 然而,当const碰到多重指针的时候,情况就会变得复...

  • c语言之const和指针

    const和指针 区别方法:如果const位于*的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量...

  • 指针和引用的本质区别

    常量指针 const int *p 指的是指针p指向的对象不可改变指针常量 int const...

网友评论

      本文标题:const指针精华

      本文链接:https://www.haomeiwen.com/subject/npkjgxtx.html