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.鏈表請點個讚唄加關注