快捷搜索:  汽车  科技

c语言参数什么时候用const(知识分享const在C语言与C)

c语言参数什么时候用const(知识分享const在C语言与C)这种情况是不分配内存的,直接被写在符号表中,即使后面被分配了内存,那么a的值也不会被改变,输出的值一直都是符号表中的值1、const int a = 10;被const修饰的全局变量不能以地址的形式进行修改,由于它在内存中位于常量区,他的地址空间是只读的。在C语言中被const的变量是直接被分配内存的。c 中 const关键字被用来表示常量,和#define的作用一样。在C 中能否通过地址来改变它的值,取决于是否给他分配了内存。主要分以下三中情况

简单的const关键字里面的学问还是挺大的,越是基础的知识越是容易忘却。

c语言参数什么时候用const(知识分享const在C语言与C)(1)

1.在C语言中const

在C语言中 const关键字用来修饰变量名为只读,仅此而已。

也就是说通过变量名不可以修改它的值,但是可以通过得到它的地址来修改他的值。

#include<stdio.h> int main(){ const int a = 10; int *p = (int *)&a; *p = 20; printf("a = %d\n" a); return 0; }

同时被const修饰的全局变量也就是外连接,其他源文件要引用只需要加上extern即可。

被const修饰的全局变量不能以地址的形式进行修改,由于它在内存中位于常量区,他的地址空间是只读的。在C语言中被const的变量是直接被分配内存的。

c语言参数什么时候用const(知识分享const在C语言与C)(2)

2.c 中的const2.1 c 中const的使用

c 中 const关键字被用来表示常量,和#define的作用一样。

在C 中能否通过地址来改变它的值,取决于是否给他分配了内存。主要分以下三中情况

1、const int a = 10;

这种情况是不分配内存的,直接被写在符号表中,即使后面被分配了内存,那么a的值也不会被改变,输出的值一直都是符号表中的值

``` #include<iostream> int main(){ const int a = 10; std::cout << "original a =" << a << std::endl; int *p = (int *)&a; *p = 200; std::cout << "*p =" << *p << std::endl; std::cout << "last a =" << a << std::endl; return 0; } ```

测试结果如下图所示:

c语言参数什么时候用const(知识分享const在C语言与C)(3)

2、int b =100;

const int a = b;

3、const person per ={"name" "id"}

2和3这种情况都是直接分配内存的,并不会被写在符号表中,它的值是可以通过地址访问的方式来改变的。

2.2 c 中const的使用建议

在c 中尽量将宏定义#define 替换为 const

由于#define在编译的预处理阶段就替换为相对应的常量,假如 #define Max 1024; 那么我们在由于这发生错误,他只会提示1024出现错误,

而我们换成const int Max = 1024;系统就会提示我们这一行发生了错误,并且定义到相对应的行。

2.3 常量指针与指针常量的区别

这一题目都是面试中好多公司愿意问的问题,刚好学习到这,就把这块也纳入到本章节中。

指针常量

int *const p;,顾名思义它是一个常量,只不过被指针修饰。

int a = 10 b =20; int *const p = &a; p = &b; //× *p = 30; //√

常量指针

const int *p;p是一个常量

int a = 10 b =20; int *const p = &a; p = &b; //√ *p = 30; //×


写在最后:另外,对于准备学习C/C 编程的小伙伴,如果你想更好的提升你的编程核心能力(内功)不妨从现在开始!

编程学习书籍分享:

c语言参数什么时候用const(知识分享const在C语言与C)(4)

编程学习视频分享:

c语言参数什么时候用const(知识分享const在C语言与C)(5)

整理分享(多年学习的源码、项目实战视频、项目笔记,基础入门教程)

欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!

对于C/C 感兴趣可以关注小编在后台私信我:【编程交流】一起来学习哦!可以领取一些C/C 的项目学习视频资料哦!已经设置好了关键词自动回复,自动领取就好了!

猜您喜欢: