C语言对于常量和变量的语法权限,const与*的组合

一、const与*组合时,记住“左物右指”,就是已*为界,const在左边,指向的对象的值不能改变,const在右边,指针的值不能改变。

const* 和 *const记忆_怎么记住const *const-CSDN博客

二、关于这些乱七八糟事的赋值和改变

C语言对于常量和变量,只是语言层面对于程序员权限而已,在内存层面没有很好的保护。可以理解成对于程序员来说,常量(constant)就是只读(only-read)权限,变量是读写(read&write)权限。

#include "stdio.h"

int main()
{
    const int x = 10;        
    
    //const int * xp=&x;
   
    //int* ptr =xp;
    //int* ptr =&x; 
    int* ptr = (int*)&x;  
    *ptr = 20; 
    printf("x=%d",x);

    int y =30;
    const int *yp =&y;
    y=40;

    printf("y=%d",y);

    return 0;
}

Windows下,VScode使用GCC编译,正常输出,随缘报警告,注释部分全都可以编译通过。

这篇博客说C++会不太一样,没试过:

“C++ 中禁止把const char* 型指针变量的内容赋给char *型指针变量(C中会警告),但是char *型指针变量的内容可以赋给const char*型指针变量”

C++中常量指针和普通指针的相互赋值问题_指针不能赋值给指针_Legends_Never_Die的博客-CSDN博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值