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

深入淺出理解C語言指針的綜合應(yīng)用

 更新時(shí)間:2022年02月25日 14:53:36   作者:學(xué)好c語言的小王同學(xué)  
指針是指向另一個(gè)變量的變量。意思是一個(gè)指針保存的是另一個(gè)變量的內(nèi)存地址。換句話說,指針保存的并不是普通意義上的數(shù)值,而是另一個(gè)變量的地址值。一個(gè)指針保存了另一個(gè)變量的地址值,就說這個(gè)指針“指向”了那個(gè)變量

指針是什么?

指針是c語言中的一個(gè)重要概念,也是C語言的一個(gè)重要的特色,正確而靈活地運(yùn)用它,可以使程序簡潔,緊湊,高效,每一個(gè)學(xué)習(xí)和使用c語言的人,都應(yīng)當(dāng)深入了解地學(xué)習(xí)和掌握指針,可以說,不掌握指針就是沒有掌握C的精華也可以說

指針是C語言的靈魂(doge)

由于通過地址能找到所需的變量單元,可以說,地址指向變量單元,打個(gè)比方,一個(gè)房間的門口掛了一個(gè)房間號(hào)2008,這個(gè)2008就是房間的地址,或者說,2008"指向"該房間.因此,將地址形象化地稱為“指針”。意思是通過它能找到以它為地址的內(nèi)存單元!

指針變量  

使用指針變量的例子

例  通過指針變量訪問整型變量

int main() {
    int a = 100, b = 10;//定義整型變量a,b并初始化
    int* p1, * p2;     //定義指向整型數(shù)據(jù)的指針變量p1,p2;
    p1 = &a;          //把變量a的地址賦給指針變量p1
    p2 = &b;         //把變量a的地址賦給指針變量p2
    printf("a=%d,b=%d\n", a, b);//輸出變量a和b的值
    printf("*p1=%d,*p2=%d\n", *p1, *p2);
        }

運(yùn)行結(jié)果:

在開頭處定義了兩個(gè)指針變量p1和p2。但此時(shí)他們并未指向任何一個(gè)變量,只是提供兩個(gè)指針變量,規(guī)定他們可以指向整型變量,至于指向哪一個(gè)整型變量,要在程序中指定.。程序第五第六行的作用就是使p1指向a,使p2指向b,此時(shí)p1的值為&a(即a的地址),p2的值為&b(即為b的地址)

*注意:定義指針變量時(shí),左側(cè)應(yīng)有類型名,否則就不是定義指針變量.

例如:

通過指針引用數(shù)組

所謂數(shù)組元素的指針就是數(shù)組元素的地址

可以用一個(gè)指針變量指向一個(gè)數(shù)組元素。例如

int arr[10]={1,3,5,7,9,11,13,15,17,19}; //定義a為包含10個(gè)整型的數(shù)組
int *p;                                //定義p為指向整型變量的指針變量
p=&a[0];                               //把a(bǔ)[0]元素的地址賦給指針變量p

&數(shù)組名vs數(shù)組名

int arr[10];

我們知道arr是數(shù)組名,數(shù)組名表示數(shù)組收元素的地址。

那么問題來了 &arr數(shù)組名到底是什么呢??

不如我們來段代碼吧!

由此可以得出數(shù)組名和&數(shù)組名打印的地址是一樣的。

我們?cè)賮砜匆欢未a!

根據(jù)代碼我們發(fā)現(xiàn),其實(shí)&arr和arr,雖然值是一樣的,但是意義應(yīng)該不一樣

實(shí)際上&arr表示的是數(shù)組的地址而不是數(shù)組首元素的地址。

數(shù)組的地址+1 跳過整個(gè)數(shù)組的大小,所以&arr+1相對(duì)于&arr的差值是40.

野指針

概念:野指針就是指針指向的位置是不可知的,(隨機(jī)性的丶不正確的丶沒有明確限制的)

野指針成因

1.指針未初始化

2.指針越界訪問

如何避免野指針

  • 指針初始化
  • 小心指針越界
  • 指針指向空間釋放即使置NULL
  • 避免返回局部變量的地址
  • 指針使用之前檢查有效性

指針運(yùn)算

小時(shí)候我們就知道1+1等于幾 那我問你如果是指針加1的話 加的是那個(gè)數(shù)字嗎 ?

下面來看一段代碼:

這里我們可以發(fā)現(xiàn)p跟p+1相差1

這里c是多少呢 ?

16進(jìn)制的C的10進(jìn)制是12,所以q+1和q相差4 

p是整型指針相當(dāng)于sizeof(int)=4

q是字符型指針相當(dāng)于sizeof(char)=1;

以上就是我歸納指針的一些小結(jié) 如果能幫助友友們

到此這篇關(guān)于深入淺出理解C語言指針的綜合應(yīng)用的文章就介紹到這了,更多相關(guān)C語言 指針內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++數(shù)據(jù)結(jié)構(gòu)之二叉搜索樹的實(shí)現(xiàn)詳解

    C++數(shù)據(jù)結(jié)構(gòu)之二叉搜索樹的實(shí)現(xiàn)詳解

    二叉搜索樹作為一個(gè)經(jīng)典的數(shù)據(jù)結(jié)構(gòu),具有鏈表的快速插入與刪除的特點(diǎn),同時(shí)查詢效率也很優(yōu)秀,所以應(yīng)用十分廣泛。本文將詳細(xì)講講二叉搜索樹的C++實(shí)現(xiàn),需要的可以參考一下
    2022-08-08
  • STL區(qū)間成員函數(shù)及區(qū)間算法總結(jié)

    STL區(qū)間成員函數(shù)及區(qū)間算法總結(jié)

    這篇文章主要匯總介紹了STL區(qū)間成員函數(shù)及區(qū)間算法,有需要的小伙伴可以參考下。
    2015-07-07
  • C語言格式輸出方式

    C語言格式輸出方式

    本文介紹了C語言中printf函數(shù)的格式輸出,包括整數(shù)和浮點(diǎn)數(shù)的格式化輸出方法,以及如何通過指定寬度和小數(shù)位數(shù)來控制輸出格式
    2025-01-01
  • openCV4.1.1+VS2019環(huán)境配置詳解

    openCV4.1.1+VS2019環(huán)境配置詳解

    這篇文章主要介紹了openCV4.1.1+VS2019環(huán)境配置詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • 適合初學(xué)者練習(xí)的C語言實(shí)現(xiàn)三子棋小游戲

    適合初學(xué)者練習(xí)的C語言實(shí)現(xiàn)三子棋小游戲

    今天這篇文章主要介紹給大家分享一個(gè)適合初學(xué)者練習(xí)的利用C語言寫三子棋小游戲,用簡單的C語言來實(shí)現(xiàn)小時(shí)候玩的三子棋游戲,下面是人機(jī)對(duì)戰(zhàn),當(dāng)然這個(gè)代碼的電腦對(duì)手是人工智障而不是人工智能 詳細(xì)內(nèi)容就請(qǐng)跟小編一起來閱讀下面文章內(nèi)容吧
    2021-10-10
  • C++實(shí)現(xiàn)播放音頻的示例詳解

    C++實(shí)現(xiàn)播放音頻的示例詳解

    這篇文章主要為大家詳細(xì)介紹了C++如何利用第三方庫實(shí)現(xiàn)播放音頻的功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-01-01
  • 基于Matlab實(shí)現(xiàn)野狗優(yōu)化算法的示例代碼

    基于Matlab實(shí)現(xiàn)野狗優(yōu)化算法的示例代碼

    野狗優(yōu)化算法(Dingo?Optimization?Algorithm,?DOA)模仿澳大利亞野狗的社交行為。DOA算法的靈感來源于野狗的狩獵策略,即迫害攻擊、分組策略和食腐行為。本文將通過Matlab實(shí)現(xiàn)這一算法,感興趣的可以了解一下
    2022-04-04
  • C語言二叉樹常見操作詳解【前序,中序,后序,層次遍歷及非遞歸查找,統(tǒng)計(jì)個(gè)數(shù),比較,求深度】

    C語言二叉樹常見操作詳解【前序,中序,后序,層次遍歷及非遞歸查找,統(tǒng)計(jì)個(gè)數(shù),比較,求深度】

    這篇文章主要介紹了C語言二叉樹常見操作,結(jié)合實(shí)例形式詳細(xì)分析了基于C語言的二叉樹前序,中序,后序,層次遍歷及非遞歸查找,統(tǒng)計(jì)個(gè)數(shù),比較,求深度等相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下
    2018-04-04
  • C語言實(shí)現(xiàn)計(jì)算樹的深度的方法

    C語言實(shí)現(xiàn)計(jì)算樹的深度的方法

    這篇文章主要介紹了C語言實(shí)現(xiàn)計(jì)算樹的深度的方法,針對(duì)數(shù)據(jù)結(jié)構(gòu)中樹進(jìn)行操作的方法,在算法設(shè)計(jì)中比較常見,需要的朋友可以參考下
    2014-09-09
  • Qt的qDebug使用小結(jié)

    Qt的qDebug使用小結(jié)

    使用qDebug()函數(shù)它可以把調(diào)試信息直接輸出到控制臺(tái)上,本文就來介紹一下qDebug的具體使用,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-06-06

最新評(píng)論

塔城市| 巴彦淖尔市| 土默特右旗| 浦东新区| 台北市| 奇台县| 汾西县| 申扎县| 屏东市| 太谷县| 浪卡子县| 泌阳县| 铜川市| 淮阳县| 宕昌县| 临高县| 响水县| 永康市| 东丽区| 女性| 孟村| 淄博市| 两当县| 东乡族自治县| 新宾| 鄂托克旗| 宝兴县| 桂平市| 阳泉市| 弥勒县| 鄯善县| 和田市| 嘉祥县| 潼南县| 都兰县| 武邑县| 策勒县| 上杭县| 乌海市| 北海市| 安徽省|