c primer plus中scanf 把字串讀進字元陣列中為什麼不要使用

時間 2022-03-08 16:30:24

1樓:匿名使用者

scanf()把一個字串讀進一個字元陣列中,語句如下:

char str[100];

scanf("%s", str ); //這裡的str就是陣列的首地址,%s表明,輸入1或多個字元到這個地址中去。 scanf()函式要求引數必須是對應的地址型別,str本身就是地址,所以,不用加&了。

&是取變數地址符,如果在輸入數值類,如:%d %c %f等資料時,因為,這種變數一般為普通變數,所以,要加&來取地址,以保證讀入資料正確。學到指標時,就會清楚些了。

2樓:

scanf函式的接收形式引數必須是對應變數的地址。在接收字串時對應形式引數的型別是char *型,一個char型陣列的首地址剛好是char *型,也就是下標為0的那個元素的地址,若陣列名是a,則a、&a[0]都可以。那麼用了&a會怎麼樣呢?

也不會有問題!因為,&a是這個陣列的地址,即&a+1將跳過這個陣列而不像a+1只指向下標為1的元素;雖然&a和a的性質差別如此大,但它兩的值是相等的,都是第0個元素的地址;c的函式在接收實參時要把實參的型別「自動強制為形參的型別(只指能夠被強制的一部分,不能強制的編譯時要報錯)」;這裡本應用a的,用了&a,呼叫時會把&a的型別自動強制為a的型別,所以不必擔心出錯……

3樓:匿名使用者

陣列已經是地址了,不用使用&

cprimerplus中講解printf函式的一些性質時講

你思考的真的很深入,將來對於程式設計來講,不可限量。為了徹底瞭解printf的機制,建議讀下printf的實現 無論是windows下面的還是linux下面的,懂一個就可以。原理一樣。但全部的 非常複雜,我也沒有時間全部每行都讀一下,只在這裡說下他的原理,你可以讀 時候進一步加深理解,先讀c,有必要...

簡單的c語言問題,scanfc ,a i)與sca

金色潛鳥 從鍵盤拍入的內容,在 鍵盤緩衝區 當拍了 enter 鍵 平時喊它回車鍵 時,鍵盤 緩衝區 的內容 才被 送到 輸入緩衝區 scanf 讀數時 是到 輸入緩衝區 取數,輸入緩衝區 沒內容 時,scanf 等待。scanf c a i 這種格式,它在緩衝區 取單個字元,空格鍵也好,tab 鍵...

近視眼鏡S C A代表什麼,眼科檢查單上的R L S C A這些字母是什麼意思

1 s表示檢測出的遠視度數值,c表示檢測出的散光數值,a表示散光軸向。2 例如 r8 s 1.50 c 1.25 a173 l7 s 3.50 c 1.25 a2 3 視力表中顯示r8 右眼 s 1.50 遠視150度 c 1.25 散光 125度 a173 散光軸向173 7l 左眼 s 3.50...