C語(yǔ)言關(guān)于指針P、*P仰挣、&P三者的區(qū)別

一伴逸、指針與指針變量

1、指針和指針變量是兩個(gè)不同的概念膘壶,但要注意的是错蝴,通常我們敘述時(shí)會(huì)把指針變量簡(jiǎn)稱為指針。

2颓芭、指針就是地址顷锰,地址就是指針,它是一個(gè)形無(wú)符號(hào)整型,一個(gè)整數(shù),它的大小取決于系統(tǒng)是16 32 還是64位的 16/8=2byte 32/8=4byte 64/8=8byte.

3亡问、指針變量其實(shí)是一個(gè)變量官紫,只不過其存放的內(nèi)容為地址,如 int* p州藕,這個(gè)p是指針類型束世,它的值存的是地址。

二床玻、指向變量的指針和指向本身的指針

假設(shè)我們定義了一個(gè)指針變量 int *p毁涉;

1、 p:p是一個(gè)指針變量的名字锈死,表示此指針變量指向的內(nèi)存地址贫堰,如果使用%p來輸出的話,它將是一個(gè)16進(jìn)制數(shù)

2待牵、 p:p表示此指針指向的內(nèi)存地址中存放的內(nèi)容严嗜,一般是一個(gè)和指針類型一致的變量或者常量。

3洲敢、 &p:&是取地址運(yùn)算符漫玄,&p就是取指針p的地址。等會(huì),怎么又來了個(gè)地址睦优,它到底和p有什么區(qū)別渗常?

p和&p區(qū)別在于指針p同時(shí)也是個(gè)變量,既然是變量汗盘,編譯器肯定要為其分配內(nèi)存地址皱碘,無(wú)論是普通的變量還是指針變量在內(nèi)存中都有一個(gè)地址 ,就像程序中定義了一個(gè)int型的變量i隐孽,編譯器要為其分配一塊內(nèi)存空間一 樣癌椿。而&p就表示編譯器為變量p分配的內(nèi)存地址,而因?yàn)閜是一個(gè)指針變量菱阵,這種特殊的身份注定了它要指向另外一個(gè)內(nèi)存地址踢俄,程序員按照程序的需要讓它指向一個(gè)內(nèi)存地址,這個(gè)它指向的內(nèi)存地址就用p表示晴及。而且都办,p指向的地址中的內(nèi)容就用*p表示。

#include <stdio.h>
int main()
{
    int a = 100;
    int *ap = &a;
    printf("%p\n", &a);//輸出:002AF744  輸出的是a變量的地址
    printf("%p\n", ap);//輸出:002AF744  通過指針變量ap輸出a變量的地址
    printf("%p\n", &ap);//輸出:002AF738  指針變量ap本身自己的地址
    printf("%d\n", *ap);//輸出:100
    printf("%p\n", &*ap);//輸出:002AF744 通過指針變量*ap輸出a變量的地址
}

三虑稼、為什么一個(gè)指針變量可以存儲(chǔ)一串字符
首先我們需要知道內(nèi)存地址(簡(jiǎn)稱地址)是一個(gè)十六進(jìn)制的數(shù)字琳钉,比如說0x403024這就可以表示一個(gè)地址,拿這個(gè)東西可以表示任意一個(gè)字符蛛倦。

指針并不是真的可以存儲(chǔ)字符串歌懒,而是存儲(chǔ)了字符串首字母的地址,其實(shí)每個(gè)字符串都是以'/0'為結(jié)束符,當(dāng)用%s輸出時(shí)溯壶,在輸出前一個(gè)字符的同時(shí)指針會(huì)自動(dòng)跳到下個(gè)字符的地址處歼培,直到遇到'/0'停止,所以%s可以輸出一個(gè)字符串

如:char *str = "hello world"
指針只能存儲(chǔ)地址茸塞,上面“hello world”存儲(chǔ)在文字常量區(qū)躲庄,str只是保存這個(gè)字符串的地址
不過可以用malloc函數(shù)開一塊空間出來,然后把地址給指針钾虐,也算是存儲(chǔ)字符串
比如char str = (char)malloc(str_size);

下面看一下例子吧

#include<iostream>
using namespace std;
class P
{
public:
    P(int age)
    {
        this->age = 10;
    }
    P& addP()
    {
        this->age += age;
        return *this;
    }
    int age;
};
//發(fā)現(xiàn)是引用噪窘,轉(zhuǎn)換為int* const ref = &a
void func(int& ref)
{
    ref = 100; //ref是引用,轉(zhuǎn)換為*ref = 100
}
int main()
{
    //鏈?zhǔn)骄幊?    P p1(10);
    p1.addP().addP().addP();
    cout << p1.age << endl;
    //引用的本質(zhì)
    //自動(dòng)轉(zhuǎn)換為int* const ref = &a; 指針常量的指針指向不可修改效扫,也說明為什么引用不可更改
    int a = 10;
    int& ref = a;
    ref = 20; //內(nèi)部發(fā)現(xiàn)ref是引用自動(dòng)幫我們轉(zhuǎn)換為*ref = 20;
    cout << "a:" << a << endl;
    cout << "ref:" << ref << endl;
    func(a);
    return 0;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末倔监,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子菌仁,更是在濱河造成了極大的恐慌浩习,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,607評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件济丘,死亡現(xiàn)場(chǎng)離奇詭異谱秽,居然都是意外死亡洽蛀,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門疟赊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來郊供,“玉大人,你說我怎么就攤上這事近哟⊥陨螅” “怎么了?”我有些...
    開封第一講書人閱讀 164,960評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵吉执,是天一觀的道長(zhǎng)疯淫。 經(jīng)常有香客問我,道長(zhǎng)戳玫,這世上最難降的妖魔是什么熙掺? 我笑而不...
    開封第一講書人閱讀 58,750評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮量九,結(jié)果婚禮上适掰,老公的妹妹穿的比我還像新娘颂碧。我一直安慰自己荠列,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,764評(píng)論 6 392
  • 文/花漫 我一把揭開白布载城。 她就那樣靜靜地躺著肌似,像睡著了一般。 火紅的嫁衣襯著肌膚如雪诉瓦。 梳的紋絲不亂的頭發(fā)上川队,一...
    開封第一講書人閱讀 51,604評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音睬澡,去河邊找鬼固额。 笑死,一個(gè)胖子當(dāng)著我的面吹牛煞聪,可吹牛的內(nèi)容都是我干的斗躏。 我是一名探鬼主播,決...
    沈念sama閱讀 40,347評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼昔脯,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼啄糙!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起云稚,我...
    開封第一講書人閱讀 39,253評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤隧饼,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后静陈,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體燕雁,經(jīng)...
    沈念sama閱讀 45,702評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,893評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了贵白。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片率拒。...
    茶點(diǎn)故事閱讀 40,015評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖禁荒,靈堂內(nèi)的尸體忽然破棺而出猬膨,到底是詐尸還是另有隱情,我是刑警寧澤呛伴,帶...
    沈念sama閱讀 35,734評(píng)論 5 346
  • 正文 年R本政府宣布勃痴,位于F島的核電站,受9級(jí)特大地震影響热康,放射性物質(zhì)發(fā)生泄漏沛申。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,352評(píng)論 3 330
  • 文/蒙蒙 一姐军、第九天 我趴在偏房一處隱蔽的房頂上張望铁材。 院中可真熱鬧,春花似錦奕锌、人聲如沸著觉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)饼丘。三九已至,卻和暖如春辽话,著一層夾襖步出監(jiān)牢的瞬間肄鸽,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工油啤, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留典徘,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,216評(píng)論 3 371
  • 正文 我出身青樓益咬,卻偏偏與公主長(zhǎng)得像逮诲,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子础废,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,969評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容