程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 指針常量與常量指針的區別,指針常量區別

指針常量與常量指針的區別,指針常量區別

編輯:C++入門知識

指針常量與常量指針的區別,指針常量區別


int a,b;

int * const p1 =&a;   //p1為指針常量

int const *p2 =&b;   //p2為常量指針

 

識別常量指針與指針常量,記住下面三句話:

  指針(*)與常量(const)誰在前先讀誰;

  指針(*)在前(int *const p1=&a)表示指針不能變,不能指向其他地址,但可以通過指針改變所指地址的值;

  常量(const)在前(int const *p2=&b) 表示不能通過指針改變所指地址的值,但是指針可以指向其他地方。 

例子:

 

#include<iostream>
using namespace std;
int main(){
	int a=1;
	int b=2;
	int const *p1=&b;	//常量指針p1 
	cout<<"*p1= "<<*p1<<endl;    //p1指向b,輸出b的值
	p1=&a;				//可以改變常量p1指針指向其他位置 
	cout<<"*p1= "<<*p1<<endl;    //p1現在指向a,輸出a的值
	int * const p2=&b;	//指針常量p2 
	cout<<"*p2= "<<*p2<<endl;    //p2指向b,輸出b的值
	*p2=3;				//可以通過指針常量p2改變所指對象的值 
	cout<<"*p2= "<<*p2<<endl;    //p2還指向b,不過b的值變成3
	return 0;
}

 

2.返回常量的函數,可以是常量指針,指針常量,常量,形式:
const type* funcname(type1 arg1,type2 arg2, ..)
type* const funcname(type1 arg1,type2 arg2, ..)
const funcname(type1 arg1,type2 arg2, ..)

 

3常量指針與指針常量至今相互賦值

  常量指針和指針常量都可以賦值給常量指針對象,常量指針對象可以進行p++操作,不能通過*p操作改變所指對象。
  常量指針和指針常量都可以賦值給指針常量,但是指針常量只能進行*p操作,不能進行p++操作。
  普通類型的返回常量的函數,目的是為了讓成員函數返回值之間不能進行運算,防止產生丑陋的代碼

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