指向常量的指针与常量指针

const int *p;  //p是一个变量,指向一个常量

int *const p;  //p是一个常量,指向一个变量或常量

c语言的const是有问题的,因为可以通过指针变量间接的修改const常量的值,所以在c语言中用#define常量的时候更多

在c++里面没有这个漏洞,是改不了的

#include<stdio.h>
int mian()
{
    int a = 0;
    const int *p = &a;  //p可以指向一个int类型的地址,但不可以用*p的方式修改这个内存的值
    a = 10;
    printf("%d\n", *p);   //可以用*p的方式读取a的值
    
    const int b = 100;
    int *p1;
    p1 = &b;    //p1 =(int *) &b;有worring进行了强转 
    *p1 = 0;
    printf("b = %d\n", b);
    
    int *const p2 = &a;   //p2指向了a的地址,p2只能指向a的地址
    //p2是常量指针,只能指向一个固定的变量地址,但可以通过*p2读写这个变量的值 
     
    return 0; 
 } 

 

posted @ 2018-02-18 11:58  heheheda  阅读(114)  评论(0编辑  收藏  举报