scanf后面的參數(shù),為什么要加上取地址的符號? 一般學(xué)習(xí)C語言學(xué)到第二天的時(shí)候,很多同學(xué)都會有這樣的疑問。 這個(gè)問題等你學(xué)完了指針,應(yīng)該就會很清晰。 scanf的作用是從標(biāo)準(zhǔn)輸入緩沖區(qū)獲得一個(gè)數(shù)據(jù),放在對應(yīng)的變量里面,假設(shè)我們獲取的是一個(gè)整數(shù)。 如果不取地址,寫法是這樣的:
scanf("%d", num);num在這個(gè)地方叫做實(shí)參。 scanf的定義在C庫中,而且還涉及可變參數(shù),我們把它簡化一下,假設(shè)函數(shù)的定義就是這樣:
int scanf(char *f, int n) { // ... }這個(gè)地方的n叫做形參。 在內(nèi)存里面,實(shí)參占 4 個(gè)字節(jié),形參也占 4 個(gè)字節(jié)。 函數(shù)體里面要做的,就是從標(biāo)準(zhǔn)輸入讀取一個(gè)整數(shù),放在 n 中。 那么問題來了,數(shù)據(jù)確實(shí)被放到了 n 里面,但是 num 沒有任何變化,回到函數(shù)調(diào)用的地方,num 并沒有變成我們想要的數(shù)據(jù)。 如果改成取地址,實(shí)參還是 num,但是形參變成了 num 的地址,指針 n 指向 num,在 scanf 函數(shù)里面,可以通過地址把獲取到的數(shù)據(jù)放到 num 中。
審核編輯:黃飛
-
參數(shù)
+關(guān)注
關(guān)注
11文章
1867瀏覽量
33104 -
C語言
+關(guān)注
關(guān)注
180文章
7632瀏覽量
141812 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4381瀏覽量
64918
原文標(biāo)題:scanf的參數(shù)為什么要取地址?
文章出處:【微信號:學(xué)益得智能硬件,微信公眾號:學(xué)益得智能硬件】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
四種獲取內(nèi)核函數(shù)地址的方法

C語言scanf函數(shù)問題
scanf函數(shù)簡單問題討論
scanf函數(shù)簡單問題討論和分享
如何對printf()函數(shù)或scanf()函數(shù)進(jìn)行重定向呢
stm32編程中如何實(shí)現(xiàn)printf函數(shù)和scanf函數(shù)?
C語言入門教程-Scanf
matlab取整函數(shù)命令代碼
printf和scanf什么意思

實(shí)現(xiàn)重定向printf()和scanf() 函數(shù)案例分析

評論