亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

c語(yǔ)言?指針零基礎(chǔ)講解

 更新時(shí)間:2022年02月09日 14:32:32   作者:誠(chéng)摯的喬治  
指針是指向另一個(gè)變量的變量。意思是一個(gè)指針保存的是另一個(gè)變量的內(nèi)存地址。換句話說(shuō),指針保存的并不是普通意義上的數(shù)值,而是另一個(gè)變量的地址值。一個(gè)指針保存了另一個(gè)變量的地址值,就說(shuō)這個(gè)指針“指向”了那個(gè)變量

1.指針是什么(可能有點(diǎn)難理解)

指針的是啥?

指針實(shí)際上就是地址,地址就是系統(tǒng)給定的編號(hào),編號(hào)就是一個(gè)個(gè)內(nèi)存單元。

在某種情況來(lái)說(shuō)指針=地址=編號(hào)=內(nèi)存單元。

指針就是地址,顧名思義,就是可以用來(lái)尋找目標(biāo)的。

所以指針變量就是存放地址的變量。

當(dāng)然我們口頭上常說(shuō)的指針就是指針變量~

那指針是怎么產(chǎn)生的呢,也就是說(shuō)內(nèi)存是怎樣產(chǎn)生的呢?

我們知道我們的計(jì)算機(jī)就是32位或64位系統(tǒng)組成,這32與64在物理上就是32根物理電線或64根物理電線組成。這物理電線通電時(shí),就會(huì)產(chǎn)生高電頻,從而產(chǎn)生電信號(hào),再由電信號(hào)轉(zhuǎn)變?yōu)閿?shù)字信號(hào),在我們計(jì)算機(jī)上就顯示數(shù)字信號(hào),我們知道計(jì)算機(jī)只能識(shí)別二進(jìn)制系列數(shù)字,所以這就最終變?yōu)?與0組成的數(shù)字信號(hào)。最終就有二的三十二或六十四次方的存儲(chǔ)空間,經(jīng)過(guò)換算,也就是4或8個(gè)GB,也就是內(nèi)存,當(dāng)然這些都是有硬件決定的。

而指針的大小也就是4個(gè)字節(jié)或八個(gè)字節(jié)組成(與指針的類型無(wú)關(guān))

原理:指針的大小由系統(tǒng)決定,比如32位系統(tǒng),就由32給比特位組成,

比如00000000000000000000000000000001

也就是4個(gè)字節(jié)~

也就是說(shuō)無(wú)論是char類型還是int類型指針大小都是4或8(在64位系統(tǒng)上)個(gè)字節(jié)。

2. 指針和指針的類型

int a=10;

int* pa=&a;     //此時(shí)int*就是指針pa的類型,而pa就是指針變量,來(lái)儲(chǔ)存地址的~

指針類型分很多種如int,float,double等;

既然大小都是四個(gè)字節(jié),那為什么要區(qū)分不同類型的指針呢?

這就要說(shuō)到指針類型的特點(diǎn):

1.指針類型決定解引用時(shí)訪問(wèn)幾個(gè)字節(jié);一個(gè)int類型指針就直接訪問(wèn)4給字節(jié)的空間,一個(gè)char類型就只能訪問(wèn)一個(gè)空間的內(nèi)存等等

2.指針類型決定了指針向前一步或向后一步能走多遠(yuǎn)的距離。就比如說(shuō)int類型的指針加一個(gè)單位就相當(dāng)于走了四個(gè)字節(jié)的空間。

從圖上就可以看到,當(dāng)指針變量的類型是int型時(shí),指針變量加一,地址就變了四個(gè)字節(jié)的,當(dāng)指針是char類型的時(shí)候,指針變量加一就變成跳過(guò)一個(gè)字節(jié)的單位了。

可以連續(xù)定義多個(gè)指針如:

int*pa,*pb;(并不是int*pa,pb);

3.野指針

所謂野指針就是沒(méi)有地址的指針,系統(tǒng)就會(huì)出現(xiàn)錯(cuò)誤,都是造成野指針的情況下,系統(tǒng)往往都不會(huì)報(bào)錯(cuò),都不能說(shuō)明,野指針就是正確的,就比如說(shuō),一個(gè)小偷,沒(méi)被進(jìn)警察抓到就能說(shuō)明他的行為是對(duì)的嗎?回答是,當(dāng)然不能。

雖然最終程序依然可以運(yùn)行,但是最終的結(jié)果并不會(huì)是預(yù)期的那樣。這時(shí)候就占用了一塊未申請(qǐng)的空間了。這塊空間的內(nèi)容是隨機(jī)的。

那野指針是怎樣造成的呢?怎樣避免野指針的發(fā)生呢?

造成原因:

1.由于指針未定義,就開(kāi)始使用。

比如:

          int*p;

          *p=20;

2.指針的越界訪問(wèn),這常常體現(xiàn)在數(shù)組里。

這就出現(xiàn)溢出的情況了~

3.指針指向的空間釋放,在函數(shù)中很常見(jiàn)。

既然出現(xiàn)了野指針,那有什么辦法可以避免野指針的出現(xiàn)呢?

解決方案

1.給指針初始話

2.小心指針越界

3.指針指向的空間釋放后,及時(shí)定位NULL,防止被再次使用。

4.避免返回局部變量地址。

5.指針使用前先檢測(cè)有效性。

4.指針的運(yùn)算

4.1 指針的加減整數(shù)的運(yùn)算

指針加減一個(gè)整數(shù),地址就會(huì)有相應(yīng)的變化;

4.2 指針-指針

這里的指針-指針,最終的結(jié)果是中間的元素個(gè)數(shù)(而不是中間有幾個(gè)字節(jié))

幾個(gè)字節(jié)由指針的類型決定;

當(dāng)然,既然由減,肯定有人會(huì)問(wèn)為什么沒(méi)加呢(問(wèn)得好,下次別問(wèn)了)

兩指針相減,得到的是兩個(gè)地址中間的元素個(gè)數(shù),那相加就沒(méi)有什么特別的含義了,所以不存在相加。

舉個(gè)例子

我們平時(shí)計(jì)算字符串的長(zhǎng)度通常有三種方法(1.計(jì)數(shù)器 2.遞歸 3.就是指針-指針)

前兩種方法就不講了~                 (前提是兩個(gè)指針是指向同一塊空間)

5.指針與數(shù)組

指針是地址,口頭上也就是指針變量~

數(shù)組是什么:數(shù)組就是相同類型數(shù)據(jù)的集合~

這似乎兩者沒(méi)什么關(guān)系,但是實(shí)際上我們可以通過(guò)指針來(lái)訪問(wèn)數(shù)組。

事實(shí)證明:*(p+i)    *(arr+i)    arr[i]   p[i] 這四種情況的結(jié)果是相同的,都可以訪問(wèn)元素

他們代表的意義是相同的?。。?/p>

6.二級(jí)指針

你可能會(huì)擔(dān)心很難(我指針都不懂,還二級(jí)指針,不看了)

別~~~~

其實(shí)二級(jí)與多級(jí)指針都很容易

二級(jí)指針指向的就是存放一級(jí)指針的地址(指針)

 int main()
{
    int a = 10;
    int* pa = &a;
    int** ppa = &pa;//ppa就是一個(gè)二級(jí)指針
    **ppa = 20;
    printf("%d\n", a);


    //int*** pppa = &ppa;//pppa就是三級(jí)指針

    return 0;
}

7.指針數(shù)組

指針數(shù)組是數(shù)組還是指針呢?

答案是:數(shù)組,是用來(lái)存放指針的數(shù)組。

除了指針數(shù)組外,其實(shí)我們還學(xué)習(xí)了整形數(shù)組和浮點(diǎn)型數(shù)組;

比如:

int* arr[4]={&a,&b,&c,&d}

&a
&b
&c
&d

int arr[4]={a,b,c,d}

a
b
c
d

對(duì)比一下,是不是很容易理解了,數(shù)組就是裝有相同類型的數(shù)據(jù),而指針數(shù)組也一樣,只是里面裝的都是一個(gè)個(gè)指針,不要想的很難哦~

到此這篇關(guān)于c語(yǔ)言 指針零基礎(chǔ)講解的文章就介紹到這了,更多相關(guān)c語(yǔ)言 指針內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++中正則表達(dá)式的使用方法詳解

    C++中正則表達(dá)式的使用方法詳解

    幾乎所有的編程語(yǔ)言都支持正則表達(dá)式。 C++從C++11開(kāi)始直接支持正則表達(dá)式。除了編程語(yǔ)言之外,大多數(shù)文本處理程序都使用正則表達(dá)式。本文將探討正則表達(dá)式的一般細(xì)節(jié)以及C++編程方面的細(xì)節(jié),感興趣的可以學(xué)習(xí)一下
    2022-05-05
  • strcpy函數(shù)實(shí)現(xiàn)簡(jiǎn)示例命分享

    strcpy函數(shù)實(shí)現(xiàn)簡(jiǎn)示例命分享

    這篇文章主要介紹了strcpy函數(shù)實(shí)現(xiàn)簡(jiǎn)示例命,需要的朋友可以參考下
    2014-03-03
  • 深入理解C++內(nèi)聯(lián)函數(shù)

    深入理解C++內(nèi)聯(lián)函數(shù)

    這篇文章主要為大家介紹了C++內(nèi)聯(lián)函數(shù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-01-01
  • C語(yǔ)言中壓縮字符串的簡(jiǎn)單算法小結(jié)

    C語(yǔ)言中壓縮字符串的簡(jiǎn)單算法小結(jié)

    這篇文章主要介紹了C語(yǔ)言中可用于實(shí)現(xiàn)字符串壓縮的簡(jiǎn)單算法小結(jié),列舉了包括哈夫曼算法等三個(gè)核心的程序?qū)崿F(xiàn)算法,需要的朋友可以參考下
    2016-03-03
  • C語(yǔ)言malloc分配問(wèn)題詳解

    C語(yǔ)言malloc分配問(wèn)題詳解

    這篇文章主要介紹了c語(yǔ)言 malloc函數(shù)的分配問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-09-09
  • C++實(shí)現(xiàn)LeetCode(170.兩數(shù)之和之三 - 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì))

    C++實(shí)現(xiàn)LeetCode(170.兩數(shù)之和之三 - 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì))

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(170.兩數(shù)之和之三 - 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • 解決C語(yǔ)言數(shù)組元素循環(huán)右移的問(wèn)題

    解決C語(yǔ)言數(shù)組元素循環(huán)右移的問(wèn)題

    今天小編就為大家分享一篇解決C語(yǔ)言數(shù)組元素循環(huán)右移的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • C語(yǔ)言實(shí)現(xiàn)單詞小幫手

    C語(yǔ)言實(shí)現(xiàn)單詞小幫手

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)單詞小幫手,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • C++實(shí)現(xiàn)LeetCode(142.單鏈表中的環(huán)之二)

    C++實(shí)現(xiàn)LeetCode(142.單鏈表中的環(huán)之二)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(142.單鏈表中的環(huán)之二),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • OpenCV基于稠密光流實(shí)現(xiàn)視頻跟蹤詳解

    OpenCV基于稠密光流實(shí)現(xiàn)視頻跟蹤詳解

    這篇文章主要為大家詳細(xì)介紹了OpenCV如何基于稠密光流實(shí)現(xiàn)視頻跟蹤功能,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的可以參考一下
    2023-02-02

最新評(píng)論