自驾游自由行网站建设,如何创建网站服务器地址,编程软件排行榜,如何优化购物网站建设目录
一.const 简介二.const 修饰指针 1.const int *p2.int const *p3.int * const p4.const int * const p 三.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 C 语言基础入门 一.const 简介
const 是 constant 的缩写#xff0c;意思是“恒定不变的”#xf…目录
一.const 简介二.const 修饰指针 1.const int *p2.int const *p3.int * const p4.const int * const p 三.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 C 语言基础入门 一.const 简介
const 是 constant 的缩写意思是“恒定不变的”它是定义只读变量或者常变量的关键字。const 定义的是变量但又相当于常量说它定义的是常量但又有变量的属性所以也叫常变量。
用 const 定义的变量的值是不允许改变的即不允许给它重新赋值即使是赋相同的值也不可以。所以说它定义的是只读变量。这也就意味着必须在定义的时候就给它赋初值。
/******************************************************************************************/
//Author:猿说编程
//Blog(个人博客地址): www.codersrc.com
//File:C语言教程 - C语言 const 修饰指针
//Time:2021/07/02 08:00
//Motto:不积跬步无以至千里不积小流无以成江海程序人生的精彩需要坚持不懈地积累
/******************************************************************************************/#include stdio.hint main() {const int a 20 ;printf(a %d\n,a);a 200 ;printf(a %d\n,a);return 0;
}/*输出Compilation Failederror: assignment of read-only variable a6 | a 200 ;| ~~^~~~~*/二.const 修饰指针
首先应该回忆一下指针内容
int *p 5;/*p:指针的内存地址类似门牌号十六进制表示0xffff*p:指针的内存地址对应的值类似门牌号对应里面住的人即5*/1.const int *p
当把 const 放最前面的时候它修饰的就是 *p那么 *p 就不可变。*p 表示的是指针变量 p 所指向的内存单元里面的内容此时这个内容不可变。其他的都可变如 p 中存放的是指向的内存单元的地址这个地址可变即 p 的指向可变。但指向谁谁的内容就不可变。
/******************************************************************************************/
//Author:猿说编程
//Blog(个人博客地址): www.codersrc.com
//File:C语言教程 - C语言 const 修饰指针
//Time:2021/07/02 08:00
//Motto:不积跬步无以至千里不积小流无以成江海程序人生的精彩需要坚持不懈地积累
/******************************************************************************************/# include stdio.hint main(void)
{int a 10;const int *p a;int * q a;*q 20;printf(a %d\n, a);a 30;printf(a %d\n, a);//const int *p a; //表示 *p 值不能发生改变否则 error: assignment of read-only location * p//*p 30; //这么写就是错的return 0;
}/*输出a 20
a 30*/2.int const *p
const 和 int 可以互换位置所以 int const *p 和 const int *p 二者是等价的
3.int * const p
此时 const 修饰的是 p所以 p 中存放的内存单元的地址不可变而内存单元中的内容可变。即 p 的指向不可变p 所指向的内存单元的内容可变。
/******************************************************************************************/
//Author:猿说编程
//Blog(个人博客地址): www.codersrc.com
//File:C语言教程 - C语言 const 修饰指针
//Time:2021/07/02 08:00
//Motto:不积跬步无以至千里不积小流无以成江海程序人生的精彩需要坚持不懈地积累
/******************************************************************************************/# include stdio.hint main(void)
{const char *p hello; //*p 不可以改变 p地址可以改变char* const q bbb; // q地址不能改变p; //ok//q; //这句是错误的. error: increment of read-only variable qprintf(%s\n,p);printf(%s\n,q);return 0;
}/*输出ellobbb*/灵魂拷问知道为什么输出是 “ello” 而不是 “hello”
4.const int * const p
*p 和 p 都被修饰了那么 p 中存放的内存单元的地址和内存单元中的内容都不可变。
/******************************************************************************************/
//Author:猿说编程
//Blog(个人博客地址): www.codersrc.com
//File:C语言教程 - C语言 const 修饰指针
//Time:2021/07/02 08:00
//Motto:不积跬步无以至千里不积小流无以成江海程序人生的精彩需要坚持不懈地积累
/******************************************************************************************/# include stdio.hint main(void)
{const char * const p hello; //*p 不可以改变 p地址不可以改变//*p; //这句是错误的. error: increment of read-only variable p//p; //这句是错误的. error: increment of read-only variable pprintf(%s\n,p);return 0;
}综上所述使用 const 修饰指针可以保护用指针访问内存时由指针导致的被访问内存空间中数据的误更改。因为指针是直接访问内存的没有拷贝而有些时候使用指针访问内存时并不是要改变里面的值而只是要使用里面的值所以一旦不小心误操作把里面的数据改了就糟糕了。
三.猜你喜欢
C 语言 数组下标越界和内存溢出区别C 语言 指针声明和定义C 语言 指针 p / p–C 语言 p/§/_(p)/_pC 语言 使用指针遍历数组C 语言 指针和数组区别C 语言 指针数组和数组指针区别C 语言 空指针 NULLC 语言 void 指针C 语言 野指针C 语言 函数值传递和址传递C 语言 函数缺省参数C 语言 函数不定长参数C 语言 函数指针C 语言 指针函数C 语言 回调函数 callbackC 语言 typedefC 语言 define 定义常量C 语言 define 防止头文件重复包含C 语言 #pragma onceC 语言 #include 与 #include “” 区别C 语言 const 修饰变量C 语言 const 修饰指针
未经允许不得转载猿说编程 » C 语言 const 修饰指针