PHP速学视频免费教程(入门到精通)
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
c++++中const与指针结合时,关键在于const的位置:const在左边修饰数据,表示“常量指针”(如const int ptr),指针可变但不能修改所指向的值;const在右边修饰指针本身,表示“指针常量”(如int const ptr),指针不可变但可修改所指向的值;若两边都有const(如const int* const ptr),则指针和数据均不可变,必须在声明时初始化,适用于需要严格保护的场景,理解时可依据“左定值,右定向”口诀快速判断。
在C++中,
const关键字与指针结合使用时,容易让人混淆。常见的说法“const指针”和“指针const”其实并不准确,更规范的说法是“常量指针对”和“指针常量”,它们的含义完全不同,取决于
const修饰的是指针本身,还是指针所指向的数据。
下面我们来详细解释:
定义:指针可以指向不同的地址,但不能通过该指针修改所指向的数据。
语法形式:
const int* ptr; // 或 int const* ptr;
这两种写法是等价的,都表示“指向常量整数的指针”。
特点:
ptr去修改。
示例:
int a = 10; int b = 20; const int* ptr = &a; // *ptr = 30; // 错误!不能通过ptr修改a的值 ptr = &b; // 正确!ptr可以指向b
关键点:
const在
*的左边,说明数据是常量。
const在
*左边,值不能改。
定义:指针本身是一个常量,即指针的指向不能改变,但可以修改它所指向的数据。
语法形式:
int* const ptr = &some_variable;
特点:
示例:
int a = 10; int b = 20; int* const ptr = &a; *ptr = 30; // 正确!可以修改a的值 // ptr = &b; // 错误!ptr不能改变指向
关键点:
const在
*的右边,说明指针本身是常量。
定义:指针本身不能改变,指向的数据也不能通过该指针修改。
语法形式:
const int* const ptr = &a;
特点:
示例:
int a = 10; int b = 20; const int* const ptr = &a; // *ptr = 30; // 错误!不能修改值 // ptr = &b; // 错误!不能修改指针指向
适用场景:用于保护数据和指针本身,常用于函数参数中防止误操作。
记住这个简单规则:
const在
*左边:数据是常量 → 不能改值。
const在
*右边:指针是常量 → 不能改指向。
const:都不能改。
例子分析:
声明 | 含义 |
---|---|
@@######@@ | 数据是常量,指针可变(常量指针) |
@@######@@ | 同上(等价写法) |
@@######@@ | 指针是常量,数据可变(指针常量) |
@@######@@ | 数据和指针都是常量 |
“常量指针” vs “指针常量”命名容易混淆:
const int* ptr),重点在“指向常量”。
int const* ptr),重点在“指针是常量”。
初始化要求:
int* const ptr)必须在定义时初始化,否则编译报错。
函数参数中的使用:
const int* const ptr
基本上就这些。理解的关键是分清
const int*修饰的是
int* const后面的类型(数据),还是
int* const ptr本身(指针变量)。多写几个例子,结合“左定值,右定向”的口诀,很快就能掌握。
void func(const int* ptr); // 防止函数内修改数据 void func(int* const ptr); // 指针不能变,但数据可改(较少用) void func(const int* const ptr); // 最严格保护
const
*
*
已抢3995个
抢已抢2676个
抢已抢3124个
抢已抢4824个
抢已抢4302个
抢已抢34493个
抢