C/C++ const修饰指针

const类型

  • const修饰指针
  • const修饰常量
  • const修饰指针和常量
#include <stdio.h>

int main(){
    int a = 1;
    int b = 2;

    //1. const修饰指针 ----> 常量指针
    const int *p = &a;
    // *p = 3; 报错,不能修改指针的值,只能修改它的指向
    p = &b; 
    printf("p指向的值为 %d\n", *p);

    //2. const修饰指针 ----> 指针常量
    int *const q = &a;
    // q = &b; 报错,只能修改指针的值,不能去修改它的指向
    *q = b;
    printf("q指向的值为 %d\n", *q);

    //3. const修饰指针和常量 
    const int  *const r = 3;
    /*
        *r = 100;
        r = &a;
        都会报错
    */

}

应用场景

#include<stdio.h>
#include<string.h>

struct Student{
    char name[100];
    int age;
    int score;
};

/* 传递值
void printStu(struct Student s){
    s.age = 50; //修改了s的值
    printf("姓名: %s  年龄: %d  分数: %d\n",s.name, s.age, s.score);
}
*/
/* 传递指针
void printStu(struct Student *s){
    s->age = 50; //修改了s的值, 为了防止被修改,使用const修饰,如下
    printf("姓名: %s  年龄: %d  分数: %d\n",s.name, s.age, s.score);
}
*/
void printStu(const struct Student *s){
    printf("姓名: %s  年龄: %d  分数: %d\n",s.name, s.age, s.score);
}

int main(){
    struct Student s = {"Garrix", 27, 100};
    // printStu(s); 一般用指针传递,这样系统开销会小很多,因为每次值传递,系统就会复制一份结构体
    printStu(&s);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值