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);
}