在C語言中,當形參和實參都為指標時,在函式中傳遞的是地址嗎

2023-01-20 19:15:43 字數 4835 閱讀 8002

1樓:

是的,指標這玩意兒,就是專門和地址掛鉤的!

2樓:休和宜繁星

這程式是你寫的嗎?

要是你寫的話

你就看下面的三段話

就能找出。

1.比如你定義一個函式void

add(int

a,int

b),這裡的a和b就是形參。

2.當你進行函式呼叫的時候,add(1,

2),這裡的1和2就是實參。

3.形參就是沒有賦值的變數,實參就是有賦值的變數

c語言函式呼叫時,實參和形參是如何傳遞的?什麼時候要寫指標型變數?求高手指點~

3樓:匿名使用者

形參bai在函式定義時表示的du一種佔位符zhi,實參就是裡面存有實際變數dao值或者版

常量,函式呼叫時,實參權值會自動傳遞給形參變數。指標比較複雜了。是變數的地址,如果引數型別是指標型別,則必須把實參變數的地址傳遞過去。當然在函式內也是間接引用實參變數的。

比如void f(int * p) //形參是指標型別變數下面是呼叫形式

f(&a); //呼叫函式,實參是變數a的地址。

4樓:孟於清

比如void main(void)是形參···· void main(unsigned int m)是實參

5樓:jyw金

回答:1.傳值呼叫,形參是實參的一個拷貝,形參和實參不是同一個儲存單元。

2.傳地址呼叫,將實參的地址傳給形參,形參和實參操作同一儲存單元。

6樓:巢秀榮容子

這程式是你寫的嗎?

要是你寫的話

你就看下面的三段話

就能找出。

1.比如你定義一個函式專void

add(int

a,int

b),這裡的屬a和b就是形參。

2.當你進行函式呼叫的時候,add(1,

2),這裡的1和2就是實參。

3.形參就是沒有賦值的變數,實參就是有賦值的變數

在c語言中,函式實參與形參之間的資料傳遞方式是( )傳遞方式。

7樓:八零後電影院

函式實參與形參之間的資料傳遞方式是( 值傳遞)傳遞方式,在c語言中,資料傳遞方式有值傳遞和引用傳遞,值傳遞:傳值,實際是把實參的值賦值給行參,相當於copy。

傳值呼叫中,只使用了實參的值。傳值呼叫機制裡,形參是一個區域性變數,其初始值為相應實參的值。在引用呼叫機制裡,將實參的地址傳遞給形參,從表面上看是以實參變數取代形參,因此任何發生在形參上的改變實際上都發生在實參變數上。

引用傳遞是將變數的記憶體地址傳遞給方法,方法操作變數時會找到儲存在該地址的變數,對其進行操作。會對原變數造成影響。可以將一個變數通過引用傳遞給函式,這樣該函式就可以修改其引數的值。

8樓:春雨_潤物

值傳遞。

實參與形引數據傳遞有兩種方式:值傳遞與地址傳遞。

地址傳遞的形式為 int &a=b;

也就是我們所說的引用,但引用只有c++中有,所以c語言都是值傳遞的。

有些人有誤解:認為c語言的int *p=&a;不也是按地址傳遞嗎?其實不是這樣的。

深入理解值傳遞與地址傳遞就會發現:

值傳遞是:把實參的值傳給一個變數(形參)。所以int *p=&a也是把a的地址值傳給了指標變數p

地址傳遞是:直接把地址傳進來,沒有賦給任何變數,這樣在函式體內對形參的操作也就是對實參地操作。有這種功能的也就是引用(&)了。

9樓:影碟思

實參拷貝一份給形參 形參如果是指標 則把實參地址賦給形參

c語言中,形參的值不能傳遞給實參,那如果形參和實參都是指標,形參的值會影響實參嗎?

10樓:匿名使用者

想改變實參就要把實參的地址傳給形參,如果實參本身就是個地址(也就是指標),那如果想通過函式改變實參的值就只能傳地址的地址(即二級指標)

11樓:匿名使用者

其實指標也是傳值的。傳指標是可以修改指向的區域,但對指標的實參沒有任何影響的。

12樓:匿名使用者

可以的只要這兩個指標指向同一個地址

c語言中 關於函式形參的指標和地址的問題

13樓:談瑾高荷

void

sort(int

&a,int

&b)用c基礎講般c++才用說白傳遞址已

要記住用實參形參記憶體址函式改變引數值影響主函式值

14樓:匿名使用者

void sort(int &a,int &b)

這個用法在c基礎中不講,一般在c++中才用到,說白了,就是傳遞一個地址而已

不過你要記住,這樣用時,實參和形參在一個記憶體地址中,在子函式中改變引數的值,會影響到主函式的值

15樓:匿名使用者

你們老師太水了吧

兩種都可以 用的不同的知識點

你用的是c++中的引用

教程上的是傳地址交換值的典型程式

所以都行。

16樓:匿名使用者

對於你這程式,兩個都是可以的。

這是引用和指標做引數的區別,理解一下吧:

1.兩者都可以不用複製變元而提高效率,但是指標的傳遞實際上是複製了指標的,而引用沒有複製。

2.雖然兩者都可以改變變元的值。但是如果函式引數是指標那就是明顯暗示傳入的值可能被改變,而傳引用沒有這個暗示。

3.指標引數可以接收空值,而引用必須要指向一個值。

4.沒有被宣告為const的引用不能傳遞常量,因為編譯器不允許建立對常量的引用。

5.指標需要解除引用才能獲得或操作它指向的變數值,而引用不需要這一步。

函式的實參為常量時,形參與實參結合的傳遞方式是什麼?

17樓:深圳中宇視通科技****

//自定義函式中形參的宣告char fun (char a,char b)//形參是這樣宣告//main函式中實參的傳遞.main(void)

在c語言中,指標是怎樣通過形參改變實參的?怎樣理解?如果此處難講清楚,可以讀什麼文章?請指教!

18樓:風若遠去何人留

這個要從傳值和傳指標呼叫區別說起.

首先,每個函式的形參,都相當於一個函式的區域性變數.

那麼傳值呼叫時,比如函式 fun(int a);的時候,呼叫fun(b);

相當於新建了一個區域性變數int a=b; 然後 改變a的值自然不會改變b.

而傳指標呼叫,比如 fun(int *p);

這時呼叫fun(q); q是另外一個指標.

那麼等效於 int *p = q;

這時如果改變p的值,也不會影響q,但如果改變*p的值,由於p和q相等,所以*q也會同步改變.

如果改成另一種常見的形式

fun(&a)

那麼*p就是a值,自然會改變的.

19樓:匿名使用者

如果形參是指標,那麼其傳遞的是變數的首地址,那麼在函式中向這個地址賦值,就可以改變指標所指向地址的內容,如:

void get(int *a,int n)

20樓:匿名使用者

《征服c指標》這是一本講c語言指標的書,我看了還是挺不錯了,有很多有趣的想法,讓我恍然大悟,指標還是要靠自己去領悟,別人說永遠都不說不清楚。

在c語言中,用陣列名作為函式呼叫時的實參,實際上傳遞給形參的是____________。

21樓:足壇風行者

首地址。

因為陣列名傳遞的是陣列的地址也就是第一個元素的地址。例如:

a[3]這個陣列,3指個數,a[0]指第一個元素,全部元素指a[0]~a[2];那陣列名a規定的就是首地址。

擴充套件資料

c語言中函式引數傳遞的三種方式:

1、傳值,就是把你的變數的值傳遞給函式的形式引數,實際就是用變數的值來新生成一個形式引數,因而在函式裡對形參的改變不會影響到函式外的變數的值。

2、傳地址,就是傳變數的地址賦給函式裡形式引數的指標,使指標指向真實的變數的地址,因為對指標所指地址的內容的改變能反映到函式外,也就是能改變函式外的變數的值。

3、傳引用,實際是通過指標來實現的,能達到使用的效果如傳址,可是使用方式如傳值。說幾點建議:如果傳值的話,會生成新的物件,花費時間和空間,而在退出函式的時候,又會銷燬該物件,花費時間和空間。

22樓:匿名使用者

實引數組的首地復址。

在用數制組名作函式引數時,不是進行值的傳送,即不是把實引數組的每一個元素的值都賦予形引數組的各個元素。因為實際上形引數組並不存在,編譯系統不為形引數組分配記憶體,陣列名就是陣列的首地址,函式得到一個函式值,即為該字元陣列的首地址。

因此在陣列名作函式引數時所進行的傳送只是地址的傳送,也就是說把實引數組的首地址賦予形引數組名。形引數組名取得該首地址之後,也就等於有了實在的陣列。實際上是形引數組和實引數組為同一陣列,共同擁有一段記憶體空間。

23樓:匿名使用者

陣列名傳遞的是陣列的地址也就是第一個元素的地址 所以選 d

24樓:天雨下凡

選擇d.實引數組的首地址

25樓:匿名使用者

d首地址

~~~~~~~~

26樓:yeara洛

d.實引數組的首地址

形參和實參的區別是什麼,c語言中形參和實參是什麼意思?有什麼區別?

實參是用來填充形參的。當函式被呼叫時,形參列在函式名後面的括號裡。執行函式呼叫時,實參被傳遞給形參。1 形參變數只有在被呼叫時才分配記憶體單元,在呼叫結束時,即刻釋放所分配的記憶體單元。因此,形參只在函式內部有效。函式呼叫結束返回主呼叫函式後則不能再使用該形參變數。2 實參可以是常量 變數 表示式 ...

在C語言中,指標是怎樣通過形參改變實參的?怎樣理解?如果此處難講清楚,可以讀什麼文章?請指教

這個要從傳值和傳指標呼叫區別說起.首先,每個函式的形參,都相當於一個函式的區域性變數.那麼傳值呼叫時,比如函式 fun int a 的時候,呼叫fun b 相當於新建了一個區域性變數int a b 然後 改變a的值自然不會改變b.而傳指標呼叫,比如 fun int p 這時呼叫fun q q是另外一...

C語言中,用陣列名作形參和用指標作形參有區別嗎

還是有差別的 雖然大多數時候都可以相互用最大的差別就是指標可以改版變,可以通過指標改變指向內權容的值,但陣列名不行 舉個例子 分別作為形參 int num 10 p p num 此時p指向陣列的第一個元素我在主函式裡呼叫兩個函式 1 sum num 2 sum p 2,10 這就有區別了,因為num...