includestdio h關於c語言二級int k 7,m 5 void f intsint t

2021-07-29 09:47:06 字數 1234 閱讀 9334

1樓:娛樂小八卦啊

傳地址的變,傳值得不變。

在給a和b分別賦值5,9後,把a的地址1703740給了指標變數pointer_1,把b1703736的地址給了指標變數pointer_2(為了方便,地址用%d輸出,不同的pc,情況不同,但是原理都一樣)。然後呼叫函式,把指標儲存的值(a、b的地址)傳遞給p1、p2指標。

在呼叫函式的進行交換的**,可以看出,只是單純的將各自儲存的地址進行交換而已。所以,指標變數只是在呼叫函式裡交換了儲存的地址,可以在呼叫函式裡輸出9,5。但是一旦呼叫結束,p1、p2指標變數就會被釋放。

並沒有在根本上進行交換。c語言中三種方法交換兩個數的值:

方法一:利用中間變數,以此依託交換兩個數的值;

方法二:利用兩數之間互相加減,來實現兩數的交換;

方法三:利用按位異或^來實現兩數的交換,注意兩數需轉換成二進位制比較。

擴充套件資料

c 語言本質上是傳值呼叫(call by value)的語言,因為函式的形參都是區域性變數,它們通過傳入的實參進行初始化。

c 語言的優點是,只要表示式的型別適當,就可以當作實參。另一方面,缺點是在啟用函式時,如需要複製大資料物件,則執行成本很高。而且,函式沒有辦法修改原始變數(呼叫者的變數),只能修改原始變數的複製版本。

然而,如果函式的實參是變數的地址,那麼函式就可以通過指標,直接獲取該原始變數,並修改原始變數的值。所以,c 語言也提供了傳址呼叫(call by reference)函式。

2樓:龔煒林

#include

int k=7,m=5;

void f(int **s)

main()

{ int i=3,*p=&i,**r=&p;

f(r);r的值傳遞給s,r和s是分別的2個變數,*r=*s=p,但是f裡面重新修改了s,那麼變成了*s=t,沒有改動過p,因此r沒有變,p也沒有變。

面對指標操作的時候,先撇開其型別上的區別,比如上邊的s和t,他們本質都是一個變數,然後記錄了一個值,你只需要記錄當s=&t時,*s就是t

然後一步步推理,就能分析清楚所有的指標操作,久而久之,熟能生巧。

至於型別上,記住一個關係:s=&t,那麼s就該比t多一個*號如t是int *t,那麼s就是int **s

3樓:小號吧唧嘴

傳地址的變,傳值得不變

4樓:聖吻之櫺

s r值指向同一地址!!!

15有以下程式includestdioh

當輸入12,scanf 抄函式只接收了bai12 分別送給了變數a b,而回車則被下面的 du一個getchar 函式接收,故zhic n 回車 第二次輸入時,34getchar 函式只能dao接收1個字元,其他的被丟棄了。所以d 3 有以下程式 includemain int a 1,b 1 fo...

C語言中includestdio h這個預處理指令是不是說處理標頭檔案中的資訊

可以理解為是把標頭檔案的內容全部插入到這裡,然後你就可以使用其中的一些函式了 c語言裡面的這個 include 什麼意思啊?include是在程式編譯之前要處理的內容,稱為編譯預處理命令。編譯預處理命令還有很多,它們都以 開頭,並且不用分號結尾。stdio.h是標頭檔案,標準輸入輸出函式庫。標頭檔案...

c語言中標頭檔案include《stdio h》中的 st

usr include 在 usr include 目錄下 c語言中的標頭檔案 include stdio.h 中stdio.h是啥意思?這個標頭檔案能刪 是標頭檔案,標準輸入輸出函式庫。如果你的程式需有輸入輸出操作,那就要有這句 算是c程式標準開頭,不要少了 c語言的基本輸入輸出函式,是不能刪的 ...