程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 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放在誰前面誰就是常量。

 

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved