C++學(xué)習(xí)之指針的使用詳解
C++中指針儲存一個地址
聲明:
datatype* p; datatype表示指針指向的數(shù)據(jù)類型。
int num=0; int* pnum=# //&是地址運算符,&num表示num這個變量存儲的地址 //int*聲明了pnum是一個指針變量
解引用符號 *:
int num=1024; int* pnum=# cout<<*pnum<<endl;//結(jié)果是num的值:1024
指針的運算:
int num=1024;
int* pnum=#
//地址后移:
//cout<<*pnum<<endl;
cout<<pnum<<" ";
pnum=pnum+sizeof(int);
cout<<pnum;//輸出 0x61ff08 0x61ff18
改變變量num:
int num=1024; int* pnum=# //變量num的改變 (*pnum)++;//此時num的值變?yōu)?025,注意:不加括號可能出錯。
幾種指針:
常量指針:聲明之后不可更改(指向一個不變的內(nèi)存位置,但該位置存儲的內(nèi)容可以改變)
聲明常量指針時數(shù)據(jù)類型在前,并且聲明和初始化必須在同一行
數(shù)組名就是常量指針。
//正確聲明常量指針: int num=1024; int* const pnum=# //錯誤聲明: const int* pnum=#//指針不是常量,但是不能通過該指針改變該數(shù)據(jù)。 num=64;//no problem,可以改變變量值 *pnum=100;//wrong
指針函數(shù):
1.指針作為參數(shù)
void change(int* p)
{
(*p)++;
}
int main()
{
int num=1024;
int* pnum=#
change(pnum);
cout<<num;//輸出1025
return 0;
}
2.指針作為返回結(jié)果
int* change(int* p)
{
p=p+1;//指針向后移動
//指針p為常量指針 p+1的結(jié)果更像是指向下一個數(shù)組元素
return p;
}
int main()
{
int list1[3]={1,2,3};
int* plist1=list1;
plist1=change(plist1);
cout<<*plist1<<endl;//輸出2
return 0;
}3.this指針:訪問其他數(shù)據(jù)域的參數(shù)。
Circle::Circle()
{
double r=1;
}
Circle::Circle(double r)
{
this->r=r;//調(diào)用上一個作用域的r
}到此這篇關(guān)于C++學(xué)習(xí)之指針的使用詳解的文章就介紹到這了,更多相關(guān)C++指針內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++實現(xiàn)數(shù)據(jù)結(jié)構(gòu)的順序表詳解
這篇文章主要為大家詳細介紹了C++實現(xiàn)動態(tài)順序表,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-11-11
C語言數(shù)據(jù)結(jié)構(gòu)之擴展字符詳解
掌握C語言數(shù)據(jù)結(jié)構(gòu)的關(guān)鍵在于理解其核心概念,擴展字符作為其中的重要一環(huán),對于編程人員來說至關(guān)重要,本指南將為您深入剖析擴展字符的相關(guān)知識,帶您輕松掌握C語言數(shù)據(jù)結(jié)構(gòu),讓我們一起探索這個令人著迷的領(lǐng)域吧!2024-03-03
C語言通過gets和gets_s分別實現(xiàn)讀取含空格的字符串
在遇到包含空格的字符串輸入時該如何讀取呢?如果使用scanf以%s格式去讀取輸入的字符串,遇到空格就讀取結(jié)束了,顯然這樣是讀取不了的。本文就將介紹兩個可以對含空格字符串讀取的庫函數(shù)------gets和gets_s函數(shù),感興趣的可以了解一下2021-12-12

