const int *ptr中const的作用是什么?测试未发现其限制效果
关于const int* 指针的作用测试说明
你写的const int *p_int;,本质是指向常量整数的指针,它的限制是:不能通过这个指针修改指向地址里存储的值,但指针本身可以自由切换指向的地址。你的测试代码刚好没触碰到这个限制,所以才觉得const没起作用。
触发const限制的测试操作
如果尝试通过p_int直接修改指向的内容,编译器会报错,这就是const生效的表现:
#include <stdio.h> int main() { const int *p_int; int x = 5; p_int = &x; // 下面这行代码会编译报错,因为const限制了不能通过p_int修改指向的值 *p_int = 6; return 0; }
你代码里的操作为什么合法
p_int = &x;和p_int = &y;:这是修改指针本身的指向,const int*不限制指针自身的指向变更,所以没问题。y = 3;:这是直接修改变量y的值,没有通过指针p_int操作,完全绕开了const的限制,当然允许。
补充不同const指针的区别
如果想限制指针本身不能修改指向,可以用int* const p_int;(指针本身是常量,不能改指向,但可以通过指针修改内容);如果想同时限制两者,用const int* const p_int;(既不能改指针指向,也不能通过指针改内容)。
内容的提问来源于stack exchange,提问作者bobby wang
相关产品推荐
相关产品推荐

