当前位置:编程学习 > C/C++ >>

常量指针 和 指针常量

指针常量:


[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++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,