C語言指針詳解(通俗易懂)
【硬件電路設(shè)計(jì)零基礎(chǔ)入門,4節(jié)精品課等著你?。?!】
做個(gè)awesomeIT大咖
趁這個(gè)假期華麗變身,做夏日最靚的仔!
趕緊掃描下方二維碼,參與信盈達(dá)【硬件電路設(shè)計(jì)訓(xùn)練營(yíng)】
打卡一次,即可抱走專屬于你的神秘大禮哦!
奔走相告,信盈達(dá)學(xué)習(xí)福利卷起來了

前言
剛開始接觸C語言,對(duì)C語言中的指針有一點(diǎn)不能理解,接著還有一個(gè)"&"符號(hào)感覺兩者有點(diǎn)接近和混淆。兩者的定義如下:
&是取地址符號(hào)
*是定義指針變量,即指向內(nèi)存單元的指針
指針是C/C++語言的特色,它允許程序員直接操縱內(nèi)存,所以說C語言是一種高效的語言。很多語言屏蔽了編程人員直接操縱內(nèi)存的權(quán)限去降低軟件開發(fā)的難度。
&

&?符號(hào)的作用很清晰,?&a就是取變量a的地址。
*

為什么只打印了一個(gè)值呢?剛開始學(xué)習(xí)不是很懂,回去查指針變量的定義,再加上網(wǎng)上查閱各種資料,定義說:*表示一個(gè)指針變量,指向內(nèi)存單元,指向內(nèi)存單元,應(yīng)該就是地址吧,那么ip變量應(yīng)該被賦值一個(gè)地址,前邊說的?&?不就表示一個(gè)地址嗎,試一下

定義變量時(shí)int* a;int* 表示取指針,在地址前加*表示這個(gè)地址的內(nèi)容。
函數(shù)指針和指針函數(shù)
函數(shù)指針的定義:
returnType (*pointerName)(param list);
指針函數(shù)的定義:
returnType *pointerName(paramlist);
returnType 為函數(shù)返回值類型,pointerNmae 為指針名稱,param list 為函數(shù)參數(shù)列表,函數(shù)指針賦值為函數(shù)地址。注意:( )的優(yōu)先級(jí)高于*,第一個(gè)括號(hào)不能省略,如果寫作returnType *pointerName(paramlist);就成了函數(shù)原型(指針函數(shù)),它表明函數(shù)的返回值類型為returnType *,返回值類型為1個(gè)指針。
調(diào)用函數(shù)直接調(diào)用就好了,為什么還要定義一個(gè)函數(shù)指針呢,才接觸時(shí)很不理解,后了解到由于函數(shù)指針存儲(chǔ)的是一個(gè)內(nèi)存地址,在傳參的時(shí)候傳入一個(gè)地址比傳入一個(gè)地址對(duì)應(yīng)的函數(shù)名更高效,運(yùn)算速度更快。
數(shù)組指針
數(shù)組是一種結(jié)構(gòu)類型,在某種意義上來說數(shù)組名就是指針,可以轉(zhuǎn)化為指向其實(shí)體的指針,指針則是變量,僅僅意味著數(shù)組的存放地址,數(shù)組名概念比較寬泛,也更加復(fù)雜,而指針僅僅代表數(shù)組的首地址

指向指針的指針

總結(jié)
&a表示a變量的地址,scanf("%d",&a)中&a就是將輸入的值存入a變量的地址中
*ip定義一個(gè)指針變量ip,ip代表指針變量,賦值內(nèi)容為地址(即指向變量的地址)
*ip表示值是地址的變量,訪問的是ip地址內(nèi)容
在數(shù)組中指針變量?jī)H僅代表數(shù)組的首地址,數(shù)組名就數(shù)組的首地址

版權(quán)歸原作者所有,如有侵權(quán),請(qǐng)聯(lián)系刪除。
版權(quán)聲明:本文為CSDN博主「小鋼炮vv」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_36754767/article/details/89429475