const 在c与c++上用法上的异同

本文详细探讨了C/C++中的const关键字,解释了其在不同情况下的用法。const可以用来声明只读变量,防止意外修改。在C++中,const变量在某些情况下被视为常量,其值在编译时可能被优化存储于寄存器。通过示例代码,展示了const在指针和数组定义中的影响,以及尝试修改const变量的后果。
摘要由CSDN通过智能技术生成

1.const在c与c++共通的部分

1.1顺口溜;const 在谁前谁就不能被修改

#include <stdio.h>

int main()
{
   
第一种
  const int a=10;
   a=20;这样也是不行的

   
   int a=10;
   int b=30; 
第二种 
   const int *p=&a;
   p=&b;//这样是可以的
   *p=b;//这样是不行的
   
   int const *p= &a;
   p=&b;//这样是可以的
   *p=b;//这样是不行的
           
第三种
   int *const p=&a;
   p=&b;//这样是不行的
   *p=b;//这样是可以的
 
   
    return 0;
}

2.在c中const修饰的叫只读变量

2.1像这样的赋值是不可以的,被const的修饰的变量为只读变量,并不能赋值修改

#include <stdio.h>

int main()
{
    const int a=3;
    
    b=20;
    a=b;
    
    return 0;
}

2.2但是可以通过指针来改变a的值,因为是只读变量,终究是个变量所以可以改变,如下操作

#include <stdio.h>

int main()
{
    const int a=3;

   int *p=(int *)&a;

    *p=4;

   printf("%d\n",a);

    return 0;
}

3.在C++中使用const修饰的变量在某些情况下被称之为常量

3.1概念

const 修饰的变量承接的是一个立即数,编译器会对此变量进行优化,把这个变量的值存放在寄存器中,我们把这种方式的变量也称为符号常量。

3.2通过c++和c分别来进行举例说明

3.1.1在c中如果这样写肯定是出不来结果的会报错,因为此时的a是一个变量

#include <stdio.h>

int main()
{
   const int a=3;

   int arr[a]={1,2,3};

   int i=0;

   for(i=0;i<3;i++){
    printf("%d\n",arr[i]);
   }
    return 0;
}

3.1.2在c++中如果这样写就可以出来结果,因为此时的a是一个立即数,符号常量,如下

#include <iostream>

using namespace std;


int main()
{
    const int a=3;

    int arr[a]={1,2,3};

    int i=0;

    for(i=0;i<3;i++){
     printf("%d\n",arr[i]);
    }

    return 0;
}

3.1.3而且应为此时a是一个立即数所以任何情况下a的值都不会被修改如下a的值还是3

#include <iostream>

using namespace std;


int main()
{
    const int a=3;

    int *p=(int *)&a;

    *p=500;

    cout << a << endl;

    return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值