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 如果 宣告 是...