❤️C语言const用法详解
近期在刷题时,总是会遇到const关键字,尤其是const与指针在一起的时候,对于我这样的小白来说,总是迷迷糊糊的,需要对着笔记才能写出答案。于是想着对const的用法进行自我归纳。希望也能让你从此不再迷惑!
参考文章-------------C语言中文网
文章目录
❤️C语言const用法详解💖 const修饰变量💜 const和指针🌸 1、const放在 * 的左边🌷 2、const放在 * 的右边🌺 3、const放在 * 的 左右 边💙 const和函数形参💖 const修饰变量
问大家一个问题,const修饰变量一定不能被修改吗?(PS:看到过腾讯一面问过,可惜我找不到图片了😭 )
看到这里,很多人会想,const修饰后的变量都为常变量了,怎么可以修改?
其实不然,我们可以通过指针的方式进行修改。
int main(){const int a = 10;int* p = &a;*p = 20;printf("%d\n",a);return 0;}
说明const修饰的变量是可以通过指针来进行修改的,但是需要知道的是,这种方法在VS中会警告!不建议使用!
这里我们只需要知道被const修饰的变量也是可以被修改的即可😄
💜 const和指针
const也可以和指针变量一起使用,这样可以限制指针变量本身,也可以限制指针指向的数据。有以下的几种情况!
🌸 1、const放在 * 的左边
const放在 * 的左边,则指针变量所指向的数据不能通过指针变量改变。
但指针变量是可以改变的
int main(){int a = 10;int b = 20;const int* p = &a; //等价于 int const* p = &a;p = &b; //指针变量是可以改变printf("%d\n", *p);return 0;}
🌷 2、const放在 * 的右边
const放在 * 的右边,则指针变量不能改变
但指针变量所指向的对象是可以修改的
int main(){int a = 10;int* const p = &a;*p = 20;printf("%d\n", a);return 0;}
🌺 3、const放在 * 的 左右 边
const放在 * 的左右边,则指针变量不可被修改,且指针变量所指向的对象也不被修改,双重锁定。
💙 const和函数形参
在C语言中,单独定义const变量没有明显的优势,完全可以使用 #define命令代替。const通常用在函数形参,如果形参一个指针,为了防止在函数内部修改指向的数据,就可以用const来限制
在C语言提供的标准库函数中,就存在很多函数的形参被const所修饰,下面是部分函数的原型:
size_t strlen (const char* str);int strcmp(const char* str1,const char* str2);char* strcat(char* destination,const char* source);char* strcpy(char* destination, const char* source);int printf ( const char * format, ... );
编程好习惯:所以函数形参为指针时,若不希望指针所指向的内容被改变,则应及时在 * 的左边加上const 。
如果觉得《C语言const用法详解》对你有帮助,请点赞、收藏,并留下你的观点哦!