c语言常量指针和指针常量
测试下常量指针和指针常量。测试代码:
void testConst(void) {int i = 9527;int j = 250;const int k = 1314520;// 常量指针,指向常量(但发现也可以指向变量),不能通过该指针修改其指向的数据值。 即用于传递只读数据。const int* p1 = &i;//*p1 = 250; // 编译报错:表达式必须是可修改的左值p1 = &j; // 可以重新指向其他内存地址。不报错std::cout << "*p1: " << *p1 << std::endl;p1 = &k;std::cout << "*p1: " << *p1 << std::endl;int const* p2 = &k; // 同const int* p, 也是常量指针//*p2 = 110; // 编译报错:表达式必须是可修改的左值// 指针常量, 初始化后不能改变其指向,但可以修改其指向的数据值。 即固定地址操作int* const p3 = &i;//p3 = &j; // 编译报错:表达式必须是可修改的左值*p3 = 520;std::cout << "*p3: " << *p3 << std::endl;int m = 666;// 有俩个const,值和指针都不可改变。完全固定指针和数据const int* const p4 = &m;//p4 = &i; // 编译报错:表达式必须是可修改的左值//*p4 = 888; // 编译报错:表达式必须是可修改的左值std::cout << "*p4: " << *p4 << std::endl;
}
打印:
ok.