C语言 const和指针 详解 举例说明

C语言 const和指针

第一次写编程博客,供大家参考和自己记录。

const int *p=&a, const修饰的是指针变量*p,*p的值不能直接修改,比如:在程序其他地方再直接编写写*p=50,是会报错的。

int * const q=&b,const修饰的是地址q, q的地址不能直接修改,比如:在程序其他地方再编写q=&a,编译器直接报错。

int main(void)
{
    int a = 10;
    int b = 20;

    const int *p = &a;
    int * const q = &b;


    *q=21;// q 可改值,不可改地址
    //q=&a;//这个写法是错误的,不能直接修改q的地址
    printf("q = %d\n", *q);//打印*q值为21
    printf("b = %d\n", b);//打印b值为21,因为w通过地址修改b的值
    b=22;
    printf("q = %d\n", *q);//打印*q值为22,因为*q指向的是b的地址,b的值改变,*q的值也改变
    //总结,int * const q = &b;不能直接改变q的地址,但是可以通过修改*q和*q指向的变量b来修改*q的值。

    printf("a = %d\n", a);//a的初始化值为10
    a = 11;//*p被const修饰,*p的值不允许直接修改,可通过修改a来修改*p
    //*p = 30;  //这么写就是错的
    printf("*p = %d\n", *p);//*p打印11,因为a的值被修改了,p的地址是指向a的地址的,a变*p也变
    p=&b;
    printf("*p = %d\n", *p);//*p打印22,因为修改p的地址,*p指向a地址的值
    //总结,const int *p = &a;不能直接改变*p的值,但是可以通过修改p的地址和*p指向的变量a的值来修改*p的值。


    return 0;
}

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值