关于const和一级指针变量的种种

#define _CRT_SECURE_NO_WARNINGS 1

//const修饰的变量拥有了常量的性质 ,他的值不能被修改,我们只能初始化
//但是要记住的是 ,在C中 const修饰的变量本质还是变量,而不像C++中被修饰的变量就失去了变量的性质完全是一个常量

/*const int i;   
int const i;*///用const申明常量的方式 两种都可以;


// 重要:const修饰的指针变量

//指针的作用就是指向某个变量 变量里面有值,我们可以通过改变指针而改变指针指向的值,
//那么const在這里就起到了对指针不同方面的限定作用:
//我们要改变指针所指向的内容 有两种方式:1.直接改变指针指向的值,2.改变指针变量里面存放的地址




#include<stdio.h>
int main()
{
    int a = 10;
    int*  p = &a;       
    *p = 20;          //1.  通过改变指向的变量的值
    printf("%d\n", a);
    return 0;
}
//那么我们如果用const修饰這样的指针:
int main()
{
    int a = 10;
    int* const p = &a;       //运行无误,這里的p不能被修改的,但不影响他指向的那个空间
    *p = 20;         
    printf("%d\n", a);
    return 0;
}

int main()
{
    int a = 10;
    int const *p = &a;
    *p = 20;                //报错, 這里const修饰了指针所指向的内容 没法改变
    printf("%d\n", a);
    return 0;
}




int main()
{
    int a = 10;
    int b = 20;
    int*  p = &a;
    p = &b;                //2.  通过改变指针变量里面存放的地址改变指向的内容
    printf("%d\n", *p);
    return 0;
}



int main()
{
    int a = 10;
    int b = 20;
    int* const p = &a;      //报错,p被修饰之后没办法被改变
    p = &b;                //想要给变量p重新赋值来改变   
    printf("%d\n", *p);
    return 0;
}



int main()
{
    int a = 10;
    int b = 20;
    int const*  p = &a;
    p = &b;                //运行无误,指针指向的内容没办法改变,但是我们可以改变p的内容
    printf("%d\n", *p);
    return 0;
}


总结来说,const在‘*’的左右确实一定程度上左右着指针所指向的空间或者代表的那个值,起到一些限定作用;



我们在编写一些程序的时候,如果我们希望有些指针变量在定义之后的值不发生改变,就尝试使用constt吧 ,這也有一个好的编程习惯的体现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值