c語言函式定義中關於返回函式的疑問

時間 2021-12-19 11:39:03

1樓:匿名使用者

node *search_list(node *node, int (*compare)(void const *, void const *) ,

void const *desired_value);

1)node *  :表示返回值為乙個node * 結點指標。

2)search_list  : 函式名

3)node *node : 乙個結點指標

4)int (*compare)(void const *, void const *)  : 乙個函式指標,可以指向乙個返回值為int,引數為兩個的函式。比如:

a)int max(int const*a, int cosnt*b) ;

b)int fn(float const*a, float const*b);

也就是,只要返回值是int,引數只要是常指標,型別任意。

5)void const *desired_value :接受乙個任意型別的常指標。

補充:關於const

int a = 10;

1)a>  const int *p1 = &a; //表示*p1不可以修改,如*p1=5;錯 ,但是p1++則可以。

b>  int const *p2 = &a;    //a>和b>兩種寫法效果是一樣的,const 修飾的都是*p。

2)int * const p3 = &a; //表示p3不可以修改,如p3++錯,但是*p3=5則可以。

很多模板裡面都會用函式指標之類的引數,比如說氣泡排序:

//2).引入函式指標

#include

using namespace std;

//比較函式

bool max(int a, int b)

//bool (*cmp)(int, int):乙個函式指標

//表示指向的函式型別為:返回值為bool,同時需要兩個int引數

void maopao(int a, int len, bool (*cmp)(int, int))}}

}int main(void)

;int len = sizeof(a)/sizeof(a[0]);

maopao(a,len,max);   //第3個引數(函式名):為比較方法

for (i = 0; i < len; ++i)

{cout<

2樓:黎約聖殿

這個語句主要是用的c語言的等號算符(=),c語言裡面等號可以看做乙個函式,它的返回值是右值。

比如int i,j,x;

i=j=5; 這條語句除了賦值以外還有返回值,返回值是5所以可以這麼寫

x = (i=j=5); 這裡x就等於5了。

所以 語句 if(x==0) ...

就可以簡寫為 if((i=j=5) == 0) ...

另外,c裡面字元都是用的編碼,所以可以用整數變數儲存字元,比如 int c='c';

希望對你能有所幫助。

c語言中函式必須有返回值嗎?沒有無法使用對嗎?

3樓:匿名使用者

不是必須有返回值。如果沒有返回值型別名為"void"。

void函式的定義:

void+函式名()//無型別+函式名

{// 程式**如果沒有返回值型別名為"void", 整數型別int 型別返回值為整數型別int,以此類推……

型別名有:void int long float int* long* float* ……

4樓:喜歡種蘑菇

按標準來說,c的main函式是需要有返回值的。標準中main函式返回型別是int的,所以需要乙個返回值。但是由於歷史原因,很多地方可以看到沒有返回值的main。

比如直接main()或者說void main() 但是這樣一般編譯器也不會認為錯誤,不過建議還是寫標準的c的main函式,最好有乙個返回值,0表示正常退出。

5樓:匿名使用者

在c語言中,其實都是有返回值的,即使你不寫,編譯器,也會幫你預設,為空,希望可以幫到你,沒有,是可以使用的,只是這義氣會幫你補為空

6樓:天空下的卵石

沒有返回值也可以,可以返回值為無的,但需要返回值**,返回的結果可以是空的

7樓:匿名使用者

是的c語言函式中必須有返回值,不然無法使用

8樓:古爾格

在寫函式時,

我們一般用 型別+函式名 來定義函式,void型別是空返回值,也就是沒有返回值。

其他的,如int、double等型別函式,需要返回相應型別的返回值。

9樓:我的

不一定要有返回值,void函式不許需要有返回值,但函式依然可以呼叫

10樓:匿名使用者

不一定哦,以void開頭就不需要return返回

在c語言中,返回乙個字串的函式應該怎樣定義

11樓:風若遠去何人留

要返回字串 需要返回char*型別

需要注意的是 返回的字串 不能是該函式的區域性變數,否則會導致出錯可以是引數字串,全域性變數,靜態區域性變數,或者動態分配的記憶體比如char *my_str_cpy(char *d, char *s)

c語言中,在定義函式時,函式返回值型別與形式引數的型別一定要與宣告函式時函式返回值型別與形式引數的

12樓:

當然要一致

不過,對於形參來說,只要型別一致就行,形參變數在定義時和宣告時可以不一致,或者,在宣告函式時,可以省略形參變數名,只寫形參變數型別即可

比如你定義了

int max(int x,int y)

你的函式宣告可以寫成這三種形式的任意一種(一般來說使用第三種更簡潔)int max(int x,int y);

int max(int a,int b);

int max(int,int);

C語言如何返回字串,C語言中函式如何返回字串?

1 c語言中,字串不是一種基本型別,其本質是字元陣列,因此直接返回字串是不行的。因為c語言不允許例如 char 10 fun 這樣的函式定義方式。但是可以返回字元指標。返回一個動態分配的記憶體地址。2 例如 char c char getinput int length length 為要輸入字串的...

請問C語言中函式定義,函式宣告和函式呼叫的區別

函式宣告指函式原型宣告,只有函式名,函式型別,引數個數和型別,無函式體。一般放在主函式前。逗號結尾。函式定義,除上述外,去掉結尾逗號,加函式體。可放在main函式後面,也可放在main函式前面。放在main函式前面則不要寫函式原型宣告。 雲澹楓卿 函式宣告格式如 int max int 函式呼叫是你...

C語言中函式的定義格式是什麼,函式原型宣告的語法格式

天雲一號 函式定義就是規定函式的格式與功能。函式宣告就是在函式呼叫之前進行的一種說明。下面舉例說明兩者的語法格式 include int fun int a,int b 函式的宣告void main 下面的fun函式就是函式的定義 int fun int a,int b 注 如果被調函式 上例中為f...