當前位置:首頁 » 編程語言 » c語言匿名函數參數
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言匿名函數參數

發布時間: 2022-07-18 16:34:13

① C#中=>是什麼意思

c語言中「=>」的意思:

lambda表達式,表示一個匿名函數,=>前面的是參數,後面的是函數體。你可以把它當作一個函數。

舉例說明:Func<int,int,int>Add=(x,y)=>x+y;Console.WriteLine(Add(2,3));//5

(1)c語言匿名函數參數擴展閱讀:

C#是微軟公司發布的一種面向對象的、運行於.NET Framework之上的高級程序設計語言。並定於在微軟職業開發者論壇(PDC)上登台亮相。C#是微軟公司研究員Anders Hejlsberg的最新成果。C#看起來與Java有著驚人的相似;它包括了諸如單一繼承、介面、與Java幾乎同樣的語法和編譯成中間代碼再運行的過程。但是C#與Java有著明顯的不同,它借鑒了Delphi的一個特點,與COM(組件對象模型)是直接集成的,而且它是微軟公司 .NET windows網路框架的主角。

C#是一種安全的、穩定的、簡單的、優雅的,由C和C++衍生出來的面向對象的編程語言。它在繼承C和C++強大功能的同時去掉了一些它們的復雜特性(例如沒有宏以及不允許多重繼承)。C#綜合了VB簡單的可視化操作和C++的高運行效率,以其強大的操作能力、優雅的語法風格、創新的語言特性和便捷的面向組件編程的支持成為NET開發的首選語言。

參考資料:網路-C#

② C語言 將函數名作為參數被另外一個函數調用

要將函數名作為參數,需要使用函數指針。

函數指針的定義格式為

ret_type (*var_name)(arg_list);

表示返回值為ret_type,參數列表為arg_list的函數指針var_name.

int (*p)(int,int);

表示返回值為int,參數為兩個int型的函數指針p。

以函數指針作為形參,即可實現函數名作為參數,由另一個函數調用。


voidfunc(int(*a)(int))
{
intr=100l;
(*a)(r);
}

即可傳入函數指針,並以r為參數,調用該指針指向的函數。

③ C語言函數中的參數

if((*(p+11*m+n))!=0)
中的p是地址,我不清楚你是給p地址加上11*m+n的數還是*p+11*m+n的數
請說明白

④ C語言關於函數參數的問題

func(
(f1,f2),
(f2,f3,f4),
f5
);
這里也考到了運算符的優先順序問題
這里()最高,然後就是,(逗號),逗號運算符的優先順序是所有運算符最差的。。
逗號運算符的用法:
#include<stdio.h>
main()
{int
a;
a=1,2,3,4;//=的優先順序高於,(逗號),所以賦值1
printf("%d,%d",(1,2,3,4),a);//(1,2,3,4)逗號運算符選最後的值4}

⑤ c語言函數中的參數

在 C++ 里,這樣的參數,只能獲取指針作為實際參數,並且讓形式參數 引用 實際參數(被引用的通常是另一個變數)。
例如:Stack *pL = new Stack(); out(pL); // 對的
而不能獲取「地址常量」;
例如:Stack L; out(&L); // 錯的

在 C 里,沒有 「引用」 符號,象 double Out(Stack *&L), 不能通過編譯。

⑥ c語言中如何判斷實參變數的個數比如下面一個函數有幾個實參為什麼不勝感激

用逗號分辨參數個數,但是小括弧里的逗號不算,比如你這個函數,其中的參數有
x+y 、 e1,e2 、 fun(xy,d,(a,b)) 這三個參數。
其中(e1,e2)是個匿名函數當參數, fun()是個函數參數,其中又有 xy、d、(a,b)

⑦ c語言主函數中的參數有什麼用舉例說明

下面是兩年前對一網友的回答,供參考,希望有幫助。
main是C/C++的一重要函數,叫主函數。無論程序多復雜,代碼中必須有這么一個函數,也只能有一個這樣的函數;程序執行時就是從這個函數進入的。由於問得比較籠統,如果你想知道詳細情況的話,發給你一個網友的求助與本人的回答,自己看吧……

假定以下程序經編譯和連接後生成可執行文件PROG.EXE,如果在此可執行文件所在目錄的提示符下鍵入: PROG ABCDEFGH IJKL<回車>則輸出結果為:
void main(int argc,char *argv[]){
while(--argc>0)
printf("%s",argv[argc]);
printf("\n");
}
各句程序什麼意思?
輸出結果是什麼?
請幫忙解決,謝謝

回答求助:
這段代碼不長,但要說清楚你的要求還需要比較長的一段話。首先,說一下main(int argc,char *argv[])函數的兩個形參,第一個int argc,是記錄你輸入在命令行(你題目中說的操作就是命令行輸入)上的字元串個數;第二個*argv[]是個指針數組,存放輸入在命令行上的命令(字元串)。當命令行輸入PROG ABCDEFGH IJKL時,記錄了3個字元串(以間隔為界,不含間隔,這是約定),*argv[0]中放的是"PROG",*argv[1]中放的是"ABCDEFGH",*argv[2]中放的是"IJKL",這樣argc就是3了。while(--argc>0)是條件循環,argc>0時繼續;argc初值是3,前置--先減1為2,所以後面的輸出語句打出*argv[2]中的內容IJKL;再執行while(--argc>0),argc再減1為1,打出*argv[1]中的內容ABCDEFGH;再循環,argc減1為0,條件破壞,不再執行while(--argc>0)的循環體。所以最後顯示的是IJKLABCDEFGH。不知給你說清楚了沒有?希望有幫助。

⑧ c語言中用函數做參數怎麼用

數組元素就是下標變數,它與普通變數並無區別。 因此它作為函數實參使用與普通變數是完全相同的,在發生函數調用時,把作為實參的數組元素的值傳送給形參,實現單向的值傳送。【例5-4】說明了這種情況。

【例8-7】判別一個整數數組中各元素的值,若大於0 則輸出該值,若小於等於0則輸出0值。編程如下:#include <stdio.h>void nzp(int v){ if(v>0) printf("%d ",v); else printf("%d ",0);}int main(void){ int a[5],i; printf("input 5 numbers\n"); for(i=0;i<5;i++){ scanf("%d",&a[i]); nzp(a[i]); } return 0;}
本程序中首先定義一個無返回值函數nzp,並說明其形參v為整型變數。在函數體中根據v值輸出相應的結果。在main函數中用一個for語句輸入數組各元素,每輸入一個就以該元素作實參調用一次nzp函數,即把a[i]的值傳送給形參v,供nzp函數使用。

數組名作為函數參數
用數組名作函數參數與用數組元素作實參有幾點不同。

1) 用數組元素作實參時,只要數組類型和函數的形參變數的類型一致,那麼作為下標變數的數組元素的類型也和函數形參變數的類型是一致的。因此,並不要求函數的形參也是下標變數。換句話說,對數組元素的處理是按普通變數對待的。用數組名作函數參數時,則要求形參和相對應的實參都必須是類型相同的數組,都必須有明確的數組說明。當形參和實參二者不一致時,即會發生錯誤。

2) 在普通變數或下標變數作函數參數時,形參變數和實參變數是由編譯系統分配的兩個不同的內存單元。在函數調用時發生的值傳送是把實參變數的值賦予形參變數。在用數組名作函數參數時,不是進行值的傳送,即不是把實參數組的每一個元素的值都賦予形參數組的各個元素。因為實際上形參數組並不存在,編譯系統不為形參數組分配內存。那麼,數據的傳送是如何實現的呢?在我們曾介紹過,數組名就是數組的首地址。因此在數組名作函數參數時所進行的傳送只是地址的傳送,也就是說把實參數組的首地址賦予形參數組名。形參數組名取得該首地址之後,也就等於有了實在的數組。實際上是形參數組和實參數組為同一數組,共同擁有一段內存空間。

上圖說明了這種情形。圖中設a為實參數組,類型為整型。a佔有以2000為首地址的一塊內存區。b為形參數組名。當發生函數調用時,進行地址傳送,把實參數組a的首地址傳送給形參數組名b,於是b也取得該地址2000。於是a,b兩數組共同佔有以2000為首地址的一段連續內存單元。從圖中還可以看出a和b下標相同的元素實際上也占相同的兩個內存單元(整型數組每個元素佔二位元組)。例如a[0]和b[0]都佔用2000和2001單元,當然a[0]等於b[0]。類推則有a[i]等於b[i]。

【例8-8】數組a中存放了一個學生5門課程的成績,求平均成績。#include <stdio.h>float aver(float a[5]){ int i; float av,s=a[0]; for(i=1;i<5;i++) s=s+a[i]; av=s/5; return av;}int main(void){ float sco[5],av; int i; printf("\ninput 5 scores:\n"); for(i=0;i<5;i++) scanf("%f",&sco[i]); av=aver(sco); printf("average score is %5.2f",av); return 0;}
本程序首先定義了一個實型函數aver,有一個形參為實型數組a,長度為5。在函數aver中,把各元素值相加求出平均值,返回給主函數。主函數main 中首先完成數組sco的輸入,然後以sco作為實參調用aver函數,函數返回值送av,最後輸出av值。 從運行情況可以看出,程序實現了所要求的功能。

3) 前面已經討論過,在變數作函數參數時,所進行的值傳送是單向的。即只能從實參傳向形參,不能從形參傳回實參。形參的初值和實參相同,而形參的值發生改變後,實參並不變化,兩者的終值是不同的。而當用數組名作函數參數時,情況則不同。由於實際上形參和實參為同一數組,因此當形參數組發生變化時,實參數組也隨之變化。當然這種情況不能理解為發生了「雙向」的值傳遞。但從實際情況來看,調用函數之後實參數組的值將由於形參數組值的變化而變化。為了說明這種情況,把【例5.4】改為【例5.6】的形式。

【例8-9】題目同【例8.7】。改用數組名作函數參數。#include <stdio.h>void nzp(int a[5]){ int i; printf("\nvalues of array a are:\n"); for(i=0;i<5;i++){ if(a[i]<0) a[i]=0; printf("%d ",a[i]); }}int main(void){ int b[5],i; printf("\ninput 5 numbers:\n"); for(i=0;i<5;i++) scanf("%d",&b[i]); printf("initial values of array b are:\n"); for(i=0;i<5;i++) printf("%d ",b[i]); nzp(b); printf("\nlast values of array b are:\n"); for(i=0;i<5;i++) printf("%d ",b[i]); return 0;}
本程序中函數nzp的形參為整數組a,長度為5。主函數中實參數組b也為整型,長度也為5。在主函數中首先輸入數組b的值,然後輸出數組b的初始值。然後以數組名b為實參調用nzp函數。在nzp中,按要求把負值單元清0,並輸出形參數組a的值。 返回主函數之後,再次輸出數組b的值。從運行結果可以看出,數組b的初值和終值是不同的,數組b的終值和數組a是相同的。這說明實參形參為同一數組,它們的值同時得以改變。

用數組名作為函數參數時還應注意以下幾點:
①形參數組和實參數組的類型必須一致,否則將引起錯誤。

②形參數組和實參數組的長度可以不相同,因為在調用時,只傳送首地址而不檢查形參數組的長度。當形參數組的長度與實參數組不一致時,雖不至於出現語法錯誤(編譯能通過),但程序執行結果將與實際不符,這是應予以注意的。

【例8.10】如把例8.9修改如下:#include <stdio.h>void nzp(int a[8]){ int i; printf("\nvalues of array aare:\n"); for(i=0;i<8;i++){ if(a[i]<0)a[i]=0; printf("%d ",a[i]); }}int main(void){ int b[5],i; printf("\ninput 5 numbers:\n"); for(i=0;i<5;i++) scanf("%d",&b[i]); printf("initial values of array b are:\n"); for(i=0;i<5;i++) printf("%d ",b[i]); nzp(b); printf("\nlast values of array b are:\n"); for(i=0;i<5;i++) printf("%d ",b[i]); return 0;}
本程序與【例8.9】程序比,nzp函數的形參數組長度改為8,函數體中,for語句的循環條件也改為i<8。因此,形參數組a和實參數組b的長度不一致。編譯能夠通過,但從結果看,數組a的元素a[5]、a[6]、a[7]顯然是無意義的。

③在函數形參表中,允許不給出形參數組的長度,或用一個變數來表示數組元素的個數。例如,可以寫為:
void nzp(int a[])
或寫為
void nzp( int a[], int n )
其中形參數組a沒有給出長度,而由n值動態地表示數組的長度。n的值由主調函數的實參進行傳送。由此,【例8-10】又可改為【例8-11】的形式。

【例8-11】復制純文本新窗口
#include <stdio.h>void nzp(int a[],int n){ int i; printf("\nvalues of array a are:\n"); for(i=0;i<n;i++){ if(a[i]<0) a[i]=0; printf("%d ",a[i]); }}int main(void){ int b[5],i; printf("\ninput 5 numbers:\n"); for(i=0;i<5;i++) scanf("%d",&b[i]); printf("initial values of array b are:\n"); for(i=0;i<5;i++) printf("%d ",b[i]); nzp(b,5); printf("\nlast values of array b are:\n"); for(i=0;i<5;i++) printf("%d ",b[i]); return 0;}

⑨ c語言關於函數參數聲明

顯然,聲明為void fun(int,double)型的函數可以正確地接收char和float實參。而反過來卻不行,不僅編譯時要警告,而且運行時會帶來精度損失!這因為當一個「短」型變數賦給一個「長」型變數時會被自動提升為「長」型類型,返過來卻不行——這是C的基本機制之一。

⑩ c語言自定義函數怎麼帶參數

舉個栗子,比如計算a+b的值的函數

#include<stdio.h>
intplus(inta,intb)
{
intc=a+b;//2.此處定義的c無法被主函數直接調用,因為c為局部變數
returnc;//3.要返回計算結果,只能用return語句
}
intmain()
{
inti=5,j=7;
intans=plus(i,j);//1.該過程中,首先將i,j作為參數(與上面的plus函數說明(m,n)一一對應)傳遞給plus函數。
printf("%d",ans);
}