一小程式c語言函式呼叫問題

2025-07-14 20:00:12 字數 3794 閱讀 1272

1樓:匿名使用者

如果f()函式放在後面的話,必須在main函式呼叫它之前宣告:如 int f(int a,int b);

遵循從右向左就是先計算++i,再確定第乙個i的值;

你把++i換成i++看看結果跟你想的就一樣了。

2樓:匿名使用者

f()函式放在前面的話,必須在main函式前面宣告: int f(int a,int b);

p=f(i,++i); 遵循從右到左的規則,++i以後,i變成3了。兩個數相等。

3樓:匿名使用者

形參的計算方式從右到左 f(3,3) 所以,a = b = 3 所以,結果是0啊!

c語言函式呼叫問題(乙個語句)

4樓:千年椴木

(a++,b++,a+b)。這個語句的意思其實就是順序執行a++,b++,a+b,然後將最終的值作為第乙個引數傳遞個fun.所以經過a++,b++,a+b,可算出,最終a= 2,b=3,a+ b =5,因此(a++,b++,a+b) = 5.

c++,即是先將c的值傳個fun,然後自加。因此fun((a++,b++,a+b),c++)即為fun(5,3),所以sum = 8

5樓:二元空間

(a++,b++,a+b) 逗號表示式,a++後為2,b++後為3,最後a+b為5,整個表示式值為5

fun函式為求兩個數的和,5+3=8,執行後c在自增1

c語言中呼叫函式的乙個問題

6樓:網友

資料結構裡的快排法,是利用了分段遞迴演算法,你的圖中//註釋部分是不可行的,原來的**是正確的(估計是書上的例子寫法)。

若用你說的(i+1,i-1),只是對i位置左右的兩個元素排序,況且前後兩個引數不符合遞迴條件,直接就退出了,無效遞迴,達不到總的目的要求。

關於c語言呼叫函式的問題

7樓:網友

精度轉換強制型別轉換導致的,把%f改為%lf

8樓:z伊凡

我測試了一下,你的源程式報錯,%f是給float型變數用的,不能是double型,將所有的double修改為float後,輸入10,輸出,沒有問題。

關於乙個簡單c語言函式遞迴呼叫程式的問題

9樓:網友

long fun(int n)

等價**。long fun(int n)

n==1時,返回1;大於1時,返回n * n-1)!

10樓:網友

相當於 1*2*3*。。n

如果你把1換成0,結果就是0,如果刪去1,那麼第乙個數返回的值就是乙個不確定的值,或者說是記憶體中的某一值,導致你的結果就是-的這個數。

c語言函式乙個小程式

11樓:淡曉莉

這個就是c語言裡面典型的傳值與傳址的問題,一般的形參與實參是傳值,而陣列和指標可以實現傳址的作用,通俗點講就是起個別名的,即實參與形參是同乙個位址的。按照這個演算法,答案應該選c的,不懂可以追問的,望!

是否可以解決您的問題?

12樓:匿名使用者

形參不改變實參的值。。

乙個c語言小程式求解釋其中函式,謝謝

13樓:網友

c語言什麼時候變成了%是註釋了?

變數也不需要宣告就可以使用了?

字串用單引號定義了?

14樓:網友

這是matlab程式,不是c語言程式。

每一項都註釋解釋很清楚了,matlab中%表示行註釋開始fni=』;%輸入要進行消除趨勢項處理的檔名fid=fopen(fni,'r');%以唯讀的方式開啟資料件x=fscanf(fid,'%f',inf);%讀取檔案中訊號,並賦值於。

xstatus=fclose(fid);%關閉資料檔案sf=200;% 設定取樣頻率。

n=length(x);%計算資料長度。

t=(0:1/sf:(n-1)/sf)';% 建立取樣時間陣列m=3;% 設定消除趨勢項的階數。

a=polyfit(t,x1,m);%計算趨勢項的多項式待定係數向量a

y=x-polyval(a,t);%用 x 減去多項式係數 a 生成的趨勢項。

一道c語言函式呼叫的問題!緊急求助!

15樓:網友

void fun(int a,int b)

這個函式中,所有的運算操作都是「區域性變數」的操作,任何的變化都與其他程式**無關。

void fun(int *s,int n1,int n2) //woid寫錯了。

一、指標變數與位址 指標變數是用來儲存記憶體位址的變數,變數的值是個位址,通過這個位址值可以訪問到相應型別的資料。 每乙個變數在分配後,系統都會給它乙個位址,用來標識它,好比給乙個房間編號。而指標變數就是用來儲存這個編號的。

二、區域性變數 與 全域性變數 變數一般情況分為兩種:區域性變數和全域性變數,區域性變數就是在某乙個{}組中定義的變數,只是在這個{}組中有效,一旦離開這個組,變數就被系統自動釋放掉了(函式的引數也屬於區域性變數)。全域性變數就是在整個程式或某個原始檔中任何地方都可以訪問到的變數,它一般定義在原始檔開頭部分,只有程式結束才會被釋放。

三、函式的引數傳遞 c中函式引數傳遞的是數值。

四、陣列 陣列名是乙個位址,是這個陣列的首位址,陣列好比是一排房間(其房間間隔相同),陣列名是第乙個房間的編號,通過這個編號,可以訪問到後續的房間。當你把乙個陣列首位址傳遞到函式中去時,通過這個位址,就可以訪問到相應的後緒的房間了。

內容較多,lz還需要慢慢去消化理解。 學習不要急,慢慢來,多練習理解就好了。

16樓:

因為上面的函式傳遞是傳指標。

後面傳的是值。

woid fun(int *s,int n1,int n2)你呼叫的時候是fun(a,0,3)

要知道陣列名a是乙個指標,儲存的是陣列所有元素的首位址函式執行的時候,就通過位址進行操作,執行了交換傳值的話,函式會為傳進來的變數建立乙個副本然後交換的是副本。

函式呼叫完後,副本也被銷燬了。

17樓:網友

這是函式呼叫。

前面的fun()中第乙個引數指標型,而下面的只是一般的引數,在fun()中交換位置後,就完了,並沒有儲存修改。

要交換後,儲存修改,就要使用指標或者引用。(指標,引用給的是位址,直接操縱底層)

18樓:苦孩子

函式的引數不同。

傳位址的話主函式中的值就會變的,而傳值的話就不會變了。

19樓:匿名使用者

1、 乙個是絕對引用,s[i],它是記憶體位址,如果把它換了,直接影響到a,所以第二個呼叫並不是int a[10]=,2、乙個是相對引用,只值傳遞,未影響原陣列a中的資料。

所以這是上面不同的結果。

20樓:癘寂誯

嘿嘿,因為第乙個上面是形參指標,即使是無返回值最後結果也是會改變的,而第二個是函式,無void,無論fun()中如何改,輸出值都看main()中的原值,即和fun()無關,個人簡單理解,望採納~

21樓:匿名使用者

第一題那個用了指標,在傳遞引數時,指向了陣列a所在的首位址,改變的是該位址指向的內容;

第二題,只是值傳遞,作用範圍只在函式執行期間,函式執行完後,就被釋放,對主函式中沒有改變。。

C語言函式呼叫的問題

主函式的a作為輸入引數輸入給函式aaa進行計算,計算後a的值不發生變化。這是c語言的基本規則。從編譯原理角度講,輸入aaa的只是a的值,並不是a所在的暫存器或位址,a的值輸入aaa後,該值被存放在另乙個臨時暫存器或位址,發生改變的是這個臨時暫存器或位址的值,而非a所在的暫存器或位址的值,所以,a的值...

C語言指標建立函式問題,C語言指標呼叫函式問題,急求解釋(本題是《c和指標》上的題目)

第乙個表示傳遞graphadjlist型別的引用g,第二個表示傳遞graphadjlist型別的指標g 另外這是c 不是c。c語言指標呼叫函式問題,急求解釋 本題是 c和指標 上的題目 c語言指標作函式引數時的返回問題 首先,弄懂函式引數都是靠值傳遞。指標也是。進入函式後,函式建立幾個空間給形參,再...

c語言函式呼叫引數傳遞的是什麼,C語言函式呼叫引數傳遞的是什麼

c語言傳遞的是值而不是位址,這一點從vb轉過來的程式設計師一定要注意。否則不經意間就會犯錯誤。另外下層函式修改上層函式變數不是一種好習慣,容易引發錯誤。c語言中函式可以返回乙個函式值,如果你需要返回多個函式值可以用下面的形式 fun int a,int b main 如果按vb的習慣,fun int...