淺談C/C++指針

1.地址與指針

  • 變量的地址稱爲指針(指針是用來存放一個變量在內存的地址)
  • 用來存放一個變量地址的變量叫指針變量

2.指針定義

type * identifer =inital_value

  • 舉例
 char *p1;//p1指向char數據類型
 int *p2 //同理
 float *p3

3.指針變量初始化

  • L指針變量存放變量地址,因將變量地址賦給指針變量。
  • &取地址運算符。取出變量地址
int a=10;
int *p; //定義指針變量p
p=&a;  //把變量a的地址存入指針變量p,也稱作p指針變量a

合併

int a=10;
int *p=&a;

注意
*指針變量數據類型一旦確定,只能指向同類型的數據對象

4.&取地址運算符,*間接訪問運算符(有時候直接點解引用運算符,直接去取該地址的值)

int a=3,b;
int *p;//定義指針變量
p=&a;//p指向a,將a地址放入p中
*p=20;//將指向儲存單元賦值20,將a賦值爲20
b=*p;//把a值給b,即b=a

5.指針變量的使用

#include<iostream>
using namespace std;
int main(void)
{
	int i=5,j=10;//定義整形變量i,j
	int *pi,*pj;//定義指針變量pi,pj
	pi=&i;pj=&j;//pi指向i,pj指向j,變量i的地址放入指針變量pi中 
	cout<<i<<" "<<j<<" ";//輸出i和j值
	cout<<*pi<<" "<<*pj;//輸出*pi和*pj的值 
}

6.指針變量的兩類交換問題

1僅pi,pj儲存地址的改變(指向改變),i,j值不變

//指針變量相關的交換問題
#include<iostream>
using namespace std;
int main(void)
{
	int i=5,j=10;//定義整形變量i,j
	int *pi,*pj,*p=NULL;//定義指針變量pi,pj
	pi=&i;pj=&j;
	p=pi;pi=pj;pj=p;//實現地址的交換
	cout<<i<<" "<<j<<" ";//輸出i和j值
	cout<<*pi<<" "<<*pj;//輸出*pi和*pj的值 
}

運行結果
5 10 10 5

2.pi,pj地址儲存的值交換,指向未變i,j值變

//指針變量相關的交換問題
#include<iostream>
using namespace std;
int main(void)
{
	int i=5,j=10,k=0;//定義整形變量i,j
	int *pi,*pj;//定義指針變量pi,pj
	pi=&i;pj=&j;
	k=*pi;*pi=*pj;*pj=k;
	cout<<i<<" "<<j<<" ";//輸出i和j值
	cout<<*pi<<" "<<*pj;//輸出*pi和*pj的值 
}

後續還有1.一維數組和指針2.鏈表請點個讚唄加關注

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章