最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言基礎(chǔ)指針詳解教程

 更新時(shí)間:2021年11月19日 09:38:58   作者:RookieStriver  
此處對(duì)于指針做一些簡要的介紹,作者實(shí)屬初學(xué),寫博客也是作者學(xué)習(xí)的一個(gè)過程,難免文章中有內(nèi)容理解不到位或者有不當(dāng)之處,還請(qǐng)朋友們不吝指正,希望大家給予支持

1.1:概述

1.1.1:內(nèi)存

內(nèi)存含義:

  • 儲(chǔ)存器:用來存儲(chǔ)程序和數(shù)據(jù),輔助CPU進(jìn)行運(yùn)算處理的重要組成部分。
  • 內(nèi)存:內(nèi)部存儲(chǔ)器,暫時(shí)存放程序/數(shù)據(jù)。
  • 外存:外部儲(chǔ)存器,長時(shí)間保存程序/數(shù)據(jù)。

1.1.2:內(nèi)存

內(nèi)存地址:

  • 可以理解為將內(nèi)存抽象成一個(gè)很大的一維數(shù)組。
  • 編碼就是將內(nèi)存的每一個(gè)字節(jié)分配一個(gè)32位或者64位的編號(hào)。這個(gè)內(nèi)存編號(hào)我們就稱為地址

1.1.3:指針和指針變量

  • 內(nèi)存中每一個(gè)字節(jié)都有一個(gè)編號(hào),我們稱之為”地址“。
  • 指針的實(shí)質(zhì)就是內(nèi)存的”地址“。地址就是指針,指針也就是地址。
  • 指針是地址,而定義的指針變量是存放地址的變量。

1.2:指針基礎(chǔ)知識(shí)

1.2.1:指針變量的定義和使用

- 指針是一種數(shù)據(jù)類型,指針變量是一種存放地址編號(hào)的變量。
- ‘*' 解引用操作符,表示指針?biāo)傅膬?nèi)存空間的具體內(nèi)容。
打印變量的地址:(用%p)

在這里插入圖片描述

解引用操作符的運(yùn)用:

在這里插入圖片描述

int * 代表了指針類型,p是定義的指針類型的變量,將a的地址賦給變量P,這是p中存的是a的地址編號(hào),p就指向了a的空間,*P就表示a空間里的內(nèi)容,也就是a的值。

1.2.2:通過指針間接修改變量的值

前面我們提到了關(guān)于由const修飾的局部變量的修改,不可以通過賦值直接修改,這里我們介紹通過指針間接的修改變量的值。

在這里插入圖片描述

當(dāng)直接修改由const修飾的常量時(shí),我們可以看出會(huì)發(fā)生錯(cuò)誤。

在這里插入圖片描述

這時(shí)我們定義一個(gè)指針變量間接的修改局部變量的值是可以的!我們用個(gè)圖來輔助理解:

在這里插入圖片描述

1.2.3:指針的大小

  • sizeof() 測(cè)得是指針變量指向的儲(chǔ)存地址的大小。
  • 在32位平臺(tái),所有指針地址都是32位(4字節(jié))。
  • 在64位平臺(tái),所有指針地址都是64位(8字節(jié))。

 

1.2.4:空指針與野指針

空指針(NULL):主要用于給指針變量初始化,空指針是指向內(nèi)存地址編號(hào)為0的空間。int * P = NULL;

野指針:對(duì)我個(gè)人理解而言,對(duì)于野指針我理解為指向一個(gè)未知的空間,(通俗來講,就是我雖然知道這塊內(nèi)存的地址編號(hào),但是我并不知道這塊內(nèi)存具體存放的是什么內(nèi)容)。下面我介紹兩野指針常見錯(cuò)誤。

①:任意數(shù)值賦值給野指針。
②:操作野指針指向的內(nèi)存區(qū)域。

在這里插入圖片描述 

1.2.4:萬能指針

這里我們不做詳細(xì)的介紹,void * 指針可以指向任意變量的內(nèi)存空間:

在這里插入圖片描述

特別注意:我們?cè)趯?duì)萬能指針進(jìn)行操作時(shí),因?yàn)橄到y(tǒng)需要知道具體需要對(duì)幾個(gè)字節(jié)的內(nèi)容進(jìn)行操作,所以我們需要強(qiáng)轉(zhuǎn)成具體的指針類型。

1.2.5:const修飾的指針變量

const修飾指針變量時(shí),因const的位置不同,修飾的意義也有所不同,如下代碼:

在這里插入圖片描述

對(duì)于p1 ,const可以理解為修飾的*p1,也就是修飾的空間的內(nèi)容,這時(shí)這塊空間的地址是可以重新賦值的,而內(nèi)容不可以!
對(duì)于p2,const修飾的是指針變量p2,也就是修飾的空間地址,所以這時(shí)可以對(duì)內(nèi)容進(jìn)行輔助,而不可以改變變量的地址!
注:在編寫程序時(shí),指針作為函數(shù)參數(shù)傳遞,如果對(duì)應(yīng)的內(nèi)存空間的值不會(huì)被修改,可以使用const修飾指針數(shù)據(jù)類型。

1.3:指針與數(shù)組

1.3.1:數(shù)組名

敲重點(diǎn):對(duì)一維數(shù)組來說,數(shù)組名是首元素地址,是一個(gè)常量??!,不可以修改,切記切記,對(duì)二維數(shù)組來說,此時(shí)數(shù)組名也是首元素地址,只不過此時(shí)的首元素不再只是一個(gè)元素,而是一個(gè)一維數(shù)組。

1.3.2:指針操作數(shù)組

其實(shí)博主覺得,用指針操作數(shù)組可讀性還是比較差,而且后續(xù)面對(duì)多維數(shù)組,用指針來操作數(shù)組比較麻煩,可讀性差。無奈博主學(xué)藝不精呀。

在這里插入圖片描述

這里*(arr + i) 與arr[i]的效果一摸一樣,這里的知識(shí)點(diǎn)涉及到指針的加減運(yùn)算,見下一小節(jié)。

1.3.3:指針的加減運(yùn)算

(1) 加法運(yùn)算
指針計(jì)算絕對(duì)不是簡單的整數(shù)相加,這里與指針類型有關(guān):

  • 如果是一個(gè)整型指針,那么+1的效果就是變化一個(gè)int的大小。
  • 如果是一個(gè)字符型指針,那么+1的效果就是變化一個(gè)char的大小。

在這里插入圖片描述

此時(shí)數(shù)組名是首元素1的地址,屬于整型指針,+2表示變化2個(gè)int的大小,也就是第三個(gè)元素的地址。

(2) 減法運(yùn)算
這里對(duì)于指針減一個(gè)整數(shù)的作用與加法如出一轍,也是與指針類型有關(guān)。

在這里插入圖片描述

這里我們利用一個(gè)逆序打印數(shù)組來說明指針減法,特別注意 arr與&arr分別+1的區(qū)別,arr表示的是首元素地址,&arr表示的是整個(gè)數(shù)組的地址,arr + 1變化4字節(jié),而&arr + 1 變化的是整個(gè)數(shù)組大小的字節(jié)數(shù)(36)。

如圖:

在這里插入圖片描述

在這里插入圖片描述

我們可以看出,打印&arr與arr的地址編號(hào)是一樣的,但是意義是不一樣的。

1.3.4:指針數(shù)組

指針數(shù)組還是一個(gè)數(shù)組,數(shù)組元素都是指針類型,拿一級(jí)指針數(shù)組舉例:

在這里插入圖片描述

這里博主提一點(diǎn)自己對(duì)一級(jí)指針數(shù)組的理解,希望對(duì)大家有一丟丟幫助,一級(jí)指針數(shù)組我把它與二級(jí)指針、二維數(shù)組相對(duì)應(yīng),這里不做詳細(xì)解釋,后續(xù)指針強(qiáng)化我會(huì)解釋我的理解,這種理解可能按官方說法來說不嚴(yán)謹(jǐn),但是能幫助我們理解就好。

1.4:指針基礎(chǔ)小結(jié)

int i:定義整型變量

int * p:定義一個(gè)指向int的指針變量

int **p:定義一個(gè)二級(jí)指針,指向一級(jí)指針。

int arr[10]:定義一個(gè)有10個(gè)整型元素的數(shù)組。

int *arr[10]:定義一個(gè)有10個(gè)一級(jí)指針元素的數(shù)組。

1.5:結(jié)語

OK!!!觀眾老爺們,這里只是介紹了指針的入門知識(shí),如果朋友們覺得有一點(diǎn)點(diǎn)作用的話,希望朋友們能夠給予小菜鳥一點(diǎn)支持!后續(xù)繼續(xù)給朋友們帶來更好的博文,還希望朋友們能夠繼續(xù)關(guān)注,小菜鳥致力于把自己的學(xué)習(xí)經(jīng)驗(yàn)與個(gè)人理解更多的分享給大家,望大家喜歡與指正,希望大家以后多多支持腳本之家!

相關(guān)文章

  • OpenCV提取圖像中圓線上的數(shù)據(jù)具體流程

    OpenCV提取圖像中圓線上的數(shù)據(jù)具體流程

    在對(duì)圖像進(jìn)行處理時(shí),經(jīng)常會(huì)要提取出圖像中某條直線、圓線或者ROI區(qū)域內(nèi)的感興趣數(shù)據(jù),進(jìn)行重點(diǎn)關(guān)注。本文主要介紹了利用OpenCV獲取圖像中圓線上的數(shù)據(jù),需要的可以參考一下
    2021-11-11
  • C++實(shí)現(xiàn)十大排序算法及排序算法常見問題

    C++實(shí)現(xiàn)十大排序算法及排序算法常見問題

    法是程序的靈魂,無論學(xué)習(xí)什么語言,做什么工程項(xiàng)目,都要考慮算法的效率實(shí)現(xiàn),下面這篇文章主要給大家介紹了關(guān)于C++實(shí)現(xiàn)十大排序算法及排序算法常見問題的相關(guān)資料,需要的朋友可以參考下
    2021-09-09
  • C++四種case的詳細(xì)介紹小結(jié)

    C++四種case的詳細(xì)介紹小結(jié)

    本文主要介紹了C++四種case的詳細(xì)介紹小結(jié),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • C++ 實(shí)現(xiàn)漢諾塔的實(shí)例詳解

    C++ 實(shí)現(xiàn)漢諾塔的實(shí)例詳解

    這篇文章主要介紹了C++ 實(shí)現(xiàn)漢諾塔的實(shí)例詳解的相關(guān)資料,這里主要說明C++中數(shù)據(jù)結(jié)構(gòu)的遞歸的應(yīng)用,需要的朋友可以參考下
    2017-08-08
  • C語言用棧和隊(duì)列實(shí)現(xiàn)的回文檢測(cè)功能示例

    C語言用棧和隊(duì)列實(shí)現(xiàn)的回文檢測(cè)功能示例

    這篇文章主要介紹了C語言用棧和隊(duì)列實(shí)現(xiàn)的回文檢測(cè)功能,結(jié)合具體實(shí)例形式分析了C語言棧和隊(duì)列的定義及使用棧和隊(duì)列進(jìn)行回文檢測(cè)的操作技巧,需要的朋友可以參考下
    2017-06-06
  • 使用C++ MFC編寫一個(gè)簡單的五子棋游戲程序

    使用C++ MFC編寫一個(gè)簡單的五子棋游戲程序

    這篇文章主要介紹了使用C++ MFC編寫一個(gè)簡單的五子棋游戲程序,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-02-02
  • C++ 格式化日志輸出實(shí)現(xiàn)代碼

    C++ 格式化日志輸出實(shí)現(xiàn)代碼

    這篇文章主要介紹了C++ 格式化日志輸出實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2019-04-04
  • C++ 操作系統(tǒng)內(nèi)存分配算法的實(shí)現(xiàn)詳解

    C++ 操作系統(tǒng)內(nèi)存分配算法的實(shí)現(xiàn)詳解

    本文主要介紹了在動(dòng)態(tài)分區(qū)管理方式下采用不同的分配算法實(shí)現(xiàn)主存分配和實(shí)現(xiàn)主存回收,旨在幫助學(xué)生理解在動(dòng)態(tài)分區(qū)管理方式下應(yīng)怎樣實(shí)現(xiàn)主存空間的分配和回收。感興趣的可以了解一下
    2021-11-11
  • C++ 中類的拷貝、賦值、銷毀的實(shí)例詳解

    C++ 中類的拷貝、賦值、銷毀的實(shí)例詳解

    這篇文章主要介紹了C++ 中類的拷貝、賦值、銷毀的實(shí)例詳解的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下
    2017-09-09
  • C語言 typedef:給類型起一個(gè)別名

    C語言 typedef:給類型起一個(gè)別名

    本文主要介紹C語言 typedef,這里整理了相關(guān)資料及簡單示例代碼幫助大家學(xué)習(xí)理解,有興趣的小伙伴可以參考下
    2016-08-08

最新評(píng)論

阳高县| 尉犁县| 城步| 穆棱市| 虞城县| 上林县| 连江县| 武穴市| 晋州市| 资源县| 乌拉特前旗| 苏尼特左旗| 库尔勒市| 广河县| 宜丰县| 勃利县| 南部县| 清水河县| 习水县| 黄骅市| 罗平县| 精河县| 汽车| 旅游| 康平县| 荔浦县| 津市市| 安阳市| 新干县| 屯昌县| 寿光市| 中阳县| 白银市| 类乌齐县| 友谊县| 扬中市| 文水县| 永昌县| 全州县| 芜湖县| 肇州县|