請問這個printf為什麼要加應該在scanf才加吧

時間 2022-02-10 07:00:02

1樓:匿名使用者

沒有問題的,這個只是用了一個字串輸出的小技巧w[k][k]是一個二維陣列成員,那麼&w[k][k]就是這個成員的地址,

那麼以%s這個輸出控制符來進行printf的話,就變成了輸出以&w[k][k]為首地址的字串。

我們將w,可以看成如下:

"abcd"

"efgh"

"ijkl"

"mnop"

當k=1時,w[k][k]就是'f',那麼&w[k][k]就是'f'的地址,

以%s這個輸出控制符來進行printf的話,就變成了輸出以'f'的地址為首地址的字串,輸出"fgh"

當k=2時,w[k][k]就是'k',那麼&w[k][k]就是'k'的地址,

以%s這個輸出控制符來進行printf的話,就變成了輸出以'k'的地址為首地址的字串,輸出"kl"

所以最後輸出結果為:

fghkl

2樓:

printf("%s",var);的意思是輸出從var所指的地址開始的一個字串,自然var就必須是一個地址。&w[k][k]所指向的地址你應該能分析出來吧,再實際執行一下你就明白了

3樓:fire歷史

該printf()函式輸出的是w[k][k]的地址,也許這個程式就想輸出地址吧.如果沒有&,則輸出的是w[k][k]的值

4樓:紫瑩白馨

&是取址符,加了後輸出的是地址的值

5樓:一字工作室

去地址符號啊 輸出的是地址哦

scanf為什麼要加&,printf不加?

6樓:匿名使用者

scanf為什麼要加&,printf不加?

char c1;

scanf("%c", &c1);

printf("c1=%c", c1);

答案scanf 和 printf 也是函式。

如果呼叫的函式

1 要修改變數的值, 傳,變數的地址。

2 只是使用變數。 傳,變數,。

7樓:匿名使用者

變數名不代表地址,除非陣列!

輸入是要對 變數所分配的記憶體區域賦值,便要找到相應的記憶體位置,便要地址(類似地址傳遞)!

輸出只要變數的值,進行資料(類似值傳遞)就行!

8樓:

c語言中,scanf是為變數獲得輸入值;printf是將變數值輸出。

輸出時,只需要值就行了;而輸入時,就是把值賦值給具體的變數時,必須知道變數的地址。所以這時候需要 & 來取變數的地址。

實際上,如果是 字串變數、陣列變數、指標變數等,因為本身就代表著地址,這個時候反而不要加 & ,普通變數需要加 &。

9樓:那天小雨天

一個讀,一個取,為什麼書店裡看書不要錢,買書要錢??

c語言中為什麼printf輸出變數值的時候不要加地址符&,而scanf中卻要加上

10樓:聽不清啊

這是因為使用c語言定義的標準函式,c語言開發時就這麼規定的,沒有太多的為什麼(當初開發c語言的時候也可以不這麼寫)。

printf輸出變數值的時候不要加地址符&,而scanf中卻要加上。我們使用的時候記住它,就行了。

有時也有特例:陣列名本身就代表地址,就可以不用加取地址符&了(可以不加,加了也不錯)。

char s[100];

scanf("%s",&s);

11樓:未來需努力點綴

樓主你好

printf函式的目的是輸出 一般就是使用該變數的值 不需要改變這個變數的值

然而scanf函式的目的是輸入 是肯定會改變變數的值如果樓主學了指標 就應該知道:c語言在一個函式中要改變變數的值 就需要使用指標 那麼對於一個變數來說 就需要取地址(指標也就是地址)

希望樓主明白了哈

12樓:匿名使用者

輸出是變數的值,而賦值卻是需要地址的。

13樓:巛尢尢巛

根據我的經驗。我可以很負責的告訴你:話說輸出的printf ,肯定是已經定義賦了初始值,或者根據已知量還有前面的公式得出一個具體的數或者字元,輸出時只需寫出名稱就可對應上相應資料,這相當於清點物品,只需說名稱即可。

而從鍵盤輸入的scanf 函式,是把該資料記錄下來,相當於把資料放在記憶體的某個位置,只是相當於搬來東西,指定存放的位置。手機打字辛苦,請樓主採納

scanf("%d",&a); 為什麼要在a前加一個「&" 而printf("%d",a);就不用

14樓:匿名使用者

printf 的時候,是輸入啊,還沒有賦予地址呢,scanf是輸出,這時候a有地址啦,and符號表示地址

15樓:匿名使用者

看a是什麼型別,a是指標型別(包括陣列)就不需要加&,不是就需要加&

c語言中 如scanf("%d",&a)為什麼要加& 而printf(「%d",a+b)裡卻沒有這個& %f %d之類的是怎麼回事

16樓:匿名使用者

「scanf("%d",&a);」是輸入語句,也就是從終端鍵盤輸入數值給變數a,scanf中用到是地址,&a表示的就是變數a的地址,printf中只要指明變數名就行了,所以printf的變數名前不用加&符號,scanf與printf中的%d,%f表示的是操作的變數是整型的和浮點型的,還有%c,%s分別表示操作的變數是字元型和字串型別

17樓:倒黴熊

c語言中的函式的引數傳遞都是值傳遞,形參的改變並不能改變實參的值。

若想改變 實參的值,可以採用地址傳遞。

scanf函式將使用者的輸入的數值儲存到實參a中,所以需要傳遞a的地址。

printf函式是將a+b輸出到螢幕上,並不需要改變a+b的值,所以無需傳遞地址。

18樓:天堂妹兒

這個符號"&",是取地址運算子,由於scanf是輸入函式,所以在輸入時,一定要告訴計算機這個東西往哪儲存,所以就要把程式設計師想儲存的地址先取出來,然後在往這個地址裡輸入內容。而printf是標準輸出函式,就是在顯示器上把要顯示的東西給顯示出來,所以都是在顯示器上顯示,不用什麼取地址符號。%f表示浮點型,%d表示整型。

19樓:喬德爭

建議你多瞭解c語言的輸入輸出格式,看了你就什麼都知道了

c語言中scanf(「%s」,m);m前面為什麼不用加&??

20樓:匿名使用者

從這句話來看,其是從標準輸入流中獲取一個字串,scanf的引數傳遞的是儲存該字串的首地址,顯然無論是陣列名m或者char指標m都可以表示這個首地址,所以不用加&。

scanf函式原型: int scanf(const char *format,...);

功能: 函式 scanf() 是從標準輸入流stdio (標準輸入裝置,一般是鍵盤)中讀內容的通用子程式,可以說明的格式讀入多個字元,並儲存在對應地址的變數中。

呼叫形式: scanf("《格式說明字串》",《變數地址》);

返回值說明: 返回成功賦值的資料項數,讀到檔案末尾出錯時則返回eof。

注意事項: 變數地址要求有效,並且與格式說明的次序一致

21樓:匿名使用者

scanf(「%s」,m);//首先scanf這個函式是按照一定的輸入格式從標準輸入視窗獲取資料,並將其賦值給變數;這裡%s 是指輸入一個字串,而此處的m 即是一個字串變數名,其本身就表示字串m的首地址;因此無須再加取地址符&;

printf("%d%f%s",a,b); //這裡沒有完整寫出引數列表,控制格式與後邊的引數個數不匹配,最好寫成

printf("%d%f%s",a,b,c);或者 printf("%d%f",a,b);

這裡的 a 對應的是 %d 是表示 以十進位制整數形式輸出a

這裡的 b 對應的是 %f 是表示 以浮點數形式輸出b

c對應的是 %s 是表示以字串形式輸出c

scanf("%d%f",&a);

這裡的a對應的是%d,即必須輸入一個十進位制整數

輸入一個整數後 這條語句並沒有結束,還需要再輸入一個浮點數,只不過這個浮點數存放於緩衝區中,並未賦值給指定變數。

22樓:匿名使用者

1.因為m本身就是一個字串的地址(我們使用字串,用的是它的地址,比如m字串,m就是字串的地址),所以不用取地址符&

2.a,b一般是給十進位制,其它進位制也可以只要計算機能識別就可以

3.預設是空格,因為你沒有寫,所以是空格

這個植物加什麼請問,這個植物加什麼 請問

胡椒木,又名臺灣胡椒木,清香木 是錯誤叫法,和中文學名為清香木的植物完全不同科屬,不要混為一談。 女貞 學名 ligustrum lucidum 為木犀科女貞屬常綠灌木或喬木,高可達25米 樹皮灰褐色。枝黃褐色 灰色或紫紅色,圓柱形,疏生圓形或長圓形皮孔。女貞為 帶樹種,枝葉茂密,樹形整齊,是常用觀...

請問這個程式最後輸出的為什麼是,請問這個程式最後輸出的為什麼是99?

首先第一個輸出是system.out.println y.a 輸出son裡面的a,是預設的0所以第一個輸出0.然後第二個輸出是system.out.println y.geta 在son裡面可知geta 是獲得父類的a值 super.a 是指父類的a 父類的a預設是100,所以輸出100.接著y.m...

請問這個是什麼,請問這個是什麼?

米修看世界 全名是施耐德熱磁式電動機斷路器,可以通過按鈕控制斷路,保護馬達的 有愛的無花果 這個是漏電保護開關啊! 小彭老師說的好 這是漏電保護器,我家有,我共裝了兩個,在總電闡進屋線上裝了一個,在廁所電熱水器上又裝了一個。 這個好像是企業用的,空開的開關是不是新型的和老型的?有點像,我感覺是有點兒...