常量指针 和 指针常量
指针常量:
[cpp]
#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
int num1 = 1;
int num2 = 2;
int* const ptr = &num1;
cout<<*ptr<<endl;
//改变ptr的值
//error C3892: “ptr”: 不能给常量赋值
//ptr = &num2;
//cout<<*ptr<<endl;
//用ptr改变其所指向的值
//ok output=3
*ptr = 3;
cout<<*ptr<<endl;
//用其他变量改变ptr所指向的值
//ok output=4
num1 = 4;
cout<<*ptr<<endl;
return 0;
}
#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
int num1 = 1;
int num2 = 2;
int* const ptr = &num1;
cout<<*ptr<<endl;
//改变ptr的值
//error C3892: “ptr”: 不能给常量赋值
//ptr = &num2;
//cout<<*ptr<<endl;
//用ptr改变其所指向的值
//ok output=3
*ptr = 3;
cout<<*ptr<<endl;
//用其他变量改变ptr所指向的值
//ok output=4
num1 = 4;
cout<<*ptr<<endl;
return 0;
}
指针常量就是这里的 int * const ptr,ptr是常量不能更改,既不能改变ptr所指向的变量,但是可以用ptr改变ptr所指向的变量的值。
“指针常量”所指向的地址是常量,地址上面的数据是可以变化的。
常量指针:
[cpp]
#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
int num1 = 1;
int num2 = 2;
const int* ptr = &num1;
cout<<*ptr<<endl;
//改变ptr的值
//ok, output=2
ptr = &num2;
cout<<*ptr<<endl;
//用ptr改变其所指向的值
//error C3892: “ptr”: 不能给常量赋值
//*ptr = 3;
//cout<<*ptr<<endl;
//用其他变量改变ptr所指向的值
//ok, output=4
num1 = 4;
cout<<*ptr<<endl;
return 0;
}
#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
int num1 = 1;
int num2 = 2;
const int* ptr = &num1;
cout<<*ptr<<endl;
//改变ptr的值
//ok, output=2
ptr = &num2;
cout<<*ptr<<endl;
//用ptr改变其所指向的值
//error C3892: “ptr”: 不能给常量赋值
//*ptr = 3;
//cout<<*ptr<<endl;
//用其他变量改变ptr所指向的值
//ok, output=4
num1 = 4;
cout<<*ptr<<endl;
return 0;
}这里的const int* ptr,表示ptr所指向的变量的值对ptr来说是常量,既不能用ptr来修改其所指向的变量的值,但是可以用其他的方式修改其所指变量的值。
ptr本身不是常量可以修改,即可以指向其他的变量。
“常量指针”,顾名思义,即指向常量的指针,所指向的地址上的数据对指针来说是常量。
int * const ptr和const int* ptr的区别就在与const放在谁前面,const放在谁前面谁就是常量。
补充:软件开发 , C++ ,