栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

const用法精讲

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

const用法精讲

1.说在前面:

类似结构体函数参数通过指针来传递可以节省空间

 

但是存在一种情况,指针容易把原来的变量修改了,形成误操作,加const防止误操作,下面的p->age=100;会引起报错(但是可以间接修改)

2.使用场景:

//const修饰变量

void test01(){

//1. const基本概念

const int i = 0;

//i = 100; //错误,只读变量初始化之后不能修改

//a. 定义const变量最好初始化

const int j;

//j = 100; //错误,不能再次赋值

//b. c语言的const是一个只读变量,并不是一个常量,可通过指针间接修改

const int k = 10;

//k = 100; //错误,不可直接修改,我们可通过指针间接修改

printf("k:%dn", k);

int* p = &k;

*p = 100;

printf("k:%dn", k);

}

//const 修饰指针(*号为界限,左定值,右定域)

void test02(){

int a = 10;

int b = 20;

//const放在*号左侧 修饰p_a指针指向的内存空间不能修改,但可修改指针的指向

const int* p_a = &a;

//*p_a = 100; //不可修改指针指向的内存空间

p_a = &b; //可修改指针的指向

//const放在*号的右侧, 修饰指针的指向不能修改,但是可修改指针指向的内存空间

int* const p_b = &a;

//p_b = &b; //不可修改指针的指向

*p_b = 100; //可修改指针指向的内存空间

//指针的指向和指针指向的内存空间都不能修改

const int* const p_c = &a;

}

//2.const指针使用场景

struct Person{

char name[64];

int id;

int age;

int score;

};

//每次都对对象进行拷贝,效率低,应该用指针

void printPersonByValue(struct Person person){

printf("Name:%sn", person.name);

printf("Name:%dn", person.id);

printf("Name:%dn", person.age);

printf("Name:%dn", person.score);

}

//但是用指针会有副作用,可能会不小心修改原数据

void printPersonByPointer(const struct Person *person){

printf("Name:%sn", person->name);

printf("Name:%dn", person->id);

printf("Name:%dn", person->age);

printf("Name:%dn", person->score);

}

void test03(){

struct Person p = { "Obama", 1101, 23, 87 };

//printPersonByValue(p);

printPersonByPointer(&p);

}

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/996251.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号