C/C++知識分享:指針相關(guān)知識總結(jié),簡單易懂

文章目錄
指針與變量
指針與數(shù)組
指針與函數(shù)
指針與對象
指向類的非靜態(tài)成員的指針
指向類的靜態(tài)成員的指針
void類型的指針
指向常量的指針變量
指針常量
指針與變量
int?p;?//這是一個普通的整型變量.
int?*p;?//首先從P?處開始,先與*結(jié)合,所以說明P是一個指針,然后再與int結(jié)合,說明指針?biāo)赶虻膬?nèi)容的類型為int型.所以P是一個返回整型數(shù)據(jù)的指針。
指針與數(shù)組
int?p[3];?//首先從P?處開始,先與[]結(jié)合,說明P是一個數(shù)組,然后與int結(jié)合說明數(shù)組里的元素整型的,所以P是一個由整型數(shù)據(jù)組成的數(shù)組.
int?*p[3];?//首先從P?處開始,先與[]結(jié)合,因為其優(yōu)先級比*高,所以P是一個數(shù)組,然后再與*結(jié)合,說明數(shù)組里的元素是指針類型,然后再與int結(jié)合,說明指針?biāo)赶虻膬?nèi)容的類型是整型的,所以P是一個由返回整型數(shù)據(jù)的指針?biāo)M成的數(shù)組.
int?(*p)[3];?//首先從P?處開始,先與*結(jié)合,說明P?是一個指針然后再與[]結(jié)合(與”()”這步可以忽略,只是為了改變優(yōu)先級),說明指針?biāo)赶虻膬?nèi)容是一個數(shù)組,然后再與int?結(jié)合,說明數(shù)組里的元素是整型的.所以P是一個指向由整型數(shù)據(jù)組成的數(shù)組的指針.
指針與函數(shù)
int?p(int);?//從P?處起,先與()結(jié)合,說明P?是一個函數(shù),然后進(jìn)入()里分析,說明該函數(shù)有一個整型變量的參數(shù)然后再與外面的int結(jié)合,說明函數(shù)的返回值是一個整型數(shù)據(jù).
Int?(*p)(int);?//從P?處開始,先與指針結(jié)合,說明P?是一個指針,然后與()結(jié)合,說明指針指向的是一個函數(shù),然后再與()里的int結(jié)合,說明函數(shù)有一個int?型的參數(shù),再與最外層的int結(jié)合,說明函數(shù)的返回類型是整型,所以P?是一個指向有一個整型參數(shù)且返回類型為整型的函數(shù)的指針.
調(diào)用:p(實參)
指針與對象
Point p;//聲明一個Point類對象
Point *Ptr=&p; //聲明一個指向Point類對象p的指針Ptr通過指針調(diào)用對象成員
Ptr->數(shù)據(jù)成員名((*Ptr).數(shù)據(jù)成員名)Ptr->函數(shù)成員名((*Ptr).函數(shù)成員名)
指向類的非靜態(tài)成員的指針
1聲明
–聲明指向公有數(shù)據(jù)成員的指針類型說明符? 類名::*指針名;
–聲明指向公有函數(shù)成員的指針類型說明符? (類名::*指針名)(參數(shù)表);
2指向
–指針指向數(shù)據(jù)成員指針名=&類名::數(shù)據(jù)成員名;
–指針指向函數(shù)成員指針名=類名::函數(shù)成員名;
3調(diào)用
–通過對象名(或?qū)ο笾羔槪┡c成員指針結(jié)合來訪問數(shù)據(jù)成員
對象名.* 類成員指針名??? 或:
對象指針名—>*類成員指針名
–通過對象名(或?qū)ο笾羔槪┡c成員指針結(jié)合來訪問函數(shù)成員
(對象名.* 類成員指針名)(參數(shù)表)?? 或:
(對象指針名—>*類成員指針名)(參數(shù)表)
指向類的靜態(tài)成員的指針
對類的靜態(tài)成員的訪問不依賴于對象
可以用普通的指針來指向和訪問靜態(tài)成員
static int countP; //靜態(tài)數(shù)據(jù)成員引用性說明
int Point::countP=0; //靜態(tài)數(shù)據(jù)成員定義性說明
int *count=&Point::countP;
cout<<" Object id="<<*count<<endl;
this指針(指向當(dāng)前對象的指針)
–當(dāng)通過一個對象調(diào)用成員函數(shù)時,系統(tǒng)先將該對象的地址賦給this指針,然后調(diào)用成員函數(shù),成員函數(shù)對對象的數(shù)據(jù)成員進(jìn)行操作時,就隱含使用了this指針。
void類型的指針
void *pv;? ???? //可以聲明void類型的指針
int *pint; int i;
pv = &i; ? //void類型指針指向整型變量
pint = (int *)pv; // void指針賦值給int指針需要類型強制轉(zhuǎn)換
指向常量的指針變量
格式: const 類型標(biāo)識符 *指針變量名;
通過該指針變量只能讀取它所指的常量的值
不能通過指針變量來改變所指對象的值,但指針變量本身值可以改變,可以指向另外的對象。
指針常量
格式:
類型標(biāo)示符 *const?指針變量名=初始指針值;
該種指針在定義時必須初始化,指針本身的值不能被改變,但可以通過它對其所指變量的值讀取或修改。
————
寫在最后:對于準(zhǔn)備學(xué)習(xí)C/C++編程的小伙伴,如果你想更好的提升你的編程核心能力(內(nèi)功)不妨從現(xiàn)在開始!
微信公眾號:C語言編程學(xué)習(xí)基地
整理分享(多年學(xué)習(xí)的源碼、項目實戰(zhàn)視頻、項目筆記,基礎(chǔ)入門教程)
歡迎轉(zhuǎn)行和學(xué)習(xí)編程的伙伴,利用更多的資料學(xué)習(xí)成長比自己琢磨更快哦!
編程學(xué)習(xí)視頻分享:

粉絲編程交流:
