C語言 陣列名作為實參傳遞問題,問題如下

2021-04-21 10:02:08 字數 2885 閱讀 4736

1樓:馬輪

不知bai道你說的第2,4,5語句對應的

du是什麼。。zhi。。幫你解釋為dao什麼是1:當你調版

用fun(a,b,s);傳進權的引數實際上是:&a[0],&b[0],s變數的值(實際上也就是&a[0])現在我們把fun的形參換個名字 fun(int*p1,int*p2,int*p3)進入fun時p3=s,即p3=&a[0].你呼叫malloc時返回的值是一個int*,實際上p3=malloc返回的新指標p4*p3=*p1+*(p2++) 即 *p4=*p1+*(p2++); 看到錯誤了嗎,p4並不是s,你算出來的值賦值到malloc返回的指標p4指向的記憶體了。

你想p3(即你的s)拿到計算的值,請把s=(int*)malloc(sizeof(int));這句去掉。另外malloc出來的記憶體是需要釋放的,請呼叫free釋放,不然程式不退出的情況下記憶體會佔用。

2樓:信子

問題在於你的while迴圈。返回0,迴圈不成立,自然也就結束了

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

3樓:足壇風行者

首地址。

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

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

擴充套件資料

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

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

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

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

4樓:匿名使用者

實引數組的首地復址。

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

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

5樓:匿名使用者

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

6樓:天雨下凡

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

7樓:匿名使用者

d首地址

~~~~~~~~

8樓:yeara洛

d.實引數組的首地址

c語言中陣列名作為實參傳給被呼叫的函式時,形參獲得的是什麼

9樓:dinah穎

在函式中,之所以陣列的值能夠被修改,就是因為形參得到的是陣列的地址,而不是資料,所以,行參獲得的應該是陣列的地址

10樓:匿名使用者

把陣列作為引數傳遞給函式的時候,並非把整個陣列的內容傳遞進去,此時陣列退化為一個同型別的指標,這個指標的值就是陣列首元素的地址值。

11樓:匿名使用者

c語言中陣列來名作為實參傳給自

被呼叫的函bai數時,形參獲du

得的是陣列的起始地zhi

址。還是用例dao子說話吧。

#include

int *arry(int *a)

return b;

}int main()

;int *c;

int i;

c = arry(a);

for(i=0;i<5;i++) }

主要是通過指標把陣列,例如main裡面的a的地址傳入arry函式,然後在arry函式中用一個相容型別的指標接收地址,然後就可以再這個指標下的地址操作地址上面的資料了。

arry返回的時候也是返回一個指標(地址)。

12樓:匿名使用者

首地址。以陣列名作為函式實參。通過指標可以獲得陣列的元素地址。

c語言 陣列作為引數傳遞問題

13樓:安若曦在路上

以下是我寫的一個簡單的例子,一維陣列和二維陣列傳參。

以下是執行結果,寫的不好請指正,如圖所示。

c語言中,陣列名作為函式引數,屬於什麼傳遞,為什麼?

14樓:行了我

c語言中,陣列名作為函式引數,屬於陣列引數傳遞。在vb6.0中,允許使用陣列作為實參傳遞到子過程的形參中,陣列傳遞必須採用地址傳遞的方式來傳遞引數。

陣列型變數名本身只是該陣列所佔儲存空間的首地址,函式呼叫時,系統不會為形參分配陣列儲存空間,而是僅僅分配一個存放陣列地址(第一個元素地址)的儲存空間,此後,將實引數組的首地址傳遞給形參變數。

15樓:膽市倨

屬於地址傳遞,在函式裡修改的話,將直接影響呼叫方的數值。這是因為陣列名代表這個陣列的首地址,不過是靜態不可更改的而已。在函式裡用引用[i]下標時,就是找到這個陣列第i號元素的地址進行修改的。

所以是第於是地址傳遞。

16樓:匿名使用者

你要記住,所有傳遞給函式的引數都是通過值傳遞方式進行的。陣列名作為函式引數也不例外。

c語言中陣列名作為函式引數,C語言中,陣列名作為函式引數,屬於什麼傳遞,為什麼?

因為你從主函式傳過來之後,是給了a 10 啊,與arrlen無關啊,而且在呼叫函式時是會給區域性變數重新分配記憶體,但這也只是說原先那個記憶體消失了,那麼記憶體裡面的值也會消失了,就會重新執行rrlen sizeof a 4 函式定義和宣告的引數應該是 intoid check struct snm...

C語言新手陣列問題,C語言陣列問題

a i j a i j 理解運算優先順序就好了,裡面的那個括號 可有可無 原解析有誤。二維陣列其實就是i個具有j個元素的一維陣列,因此a i j a i j a i j c語言陣列問題 你的 問題有以下幾個 1 min和max沒有初始化 2 對於a min 和a max 沒有做迴圈參考 如下 inc...

C語言裡面陣列與指標的問題,為什麼陣列名與陣列名輸出是值,如圖所示

宣告裡定義了 int a 所以 a 是一維陣列語句裡,a 是 一維陣列 的名字,所以它代回表 a 陣列 的首地址。答 如果 宣告 是 int a 是簡單 變數,則 語句裡 a 表示 變數 a 的 值 語句裡,a 是 求 a 的地址。對於陣列a,它等於 a 0 或 a 0 也就等於 a 如果 宣告 是...