請問C語言程式將下列程式補充完整,練習結構體變數作為函式引數和函式返回值的方法

2022-03-08 22:51:49 字數 4167 閱讀 4071

1樓:會點技術的小子

親,你這裡寫的是 void fun(int a,float b,char c[20]) fun函式裡面要傳入的不是位址而是值,

你只要把 fun(&s.a,&s.b,&s.c) 改為 fun(s.a,s.b,s.c) 就行

希望採納!!!

2樓:

c="example2";錯了,c[20]代表字元陣列,c代表位址,不能這樣賦值

c語言,這題把find函式的引數和返回值都設定為結構體型別的指標變數,請問find函式怎麼修改?

3樓:匿名使用者

struct students * find(struct students * a, int n )

有關c語言中結構體變數做函式引數的問題

4樓:匿名使用者

void (struct ,double *a,int n) 關鍵在於這個函式的引數傳遞方式,struct max_element maxa 既不是引用也不是指標,那麼函式max_element_find 在傳遞實參的時候,會複製乙份用來進行計算,之所以沒有改變函式外面的變數,是因為函式內部運算過程中使用的變數是函式外部變數的乙份拷貝。

5樓:

這就是傳參的典型問題了,你使用的是直接傳參,只不過是對拷貝了乙份的變數進行操作,所以你除錯時進入max_element_find函式顯示的是拷貝的maxa的變化,但是出了函式那份拷貝就不存在了,主函式的maxa還是他自己。用引用傳值才是改變變數本身。建議你搜搜引用傳參與按值傳參的區別。

6樓:周生

要傳位址,傳值只是複製了乙個副本,不改變原來的結構體。形參與實參的關係。。。

7樓:

其實,結構名就是乙個變數,由於你的形參和你的實參取名是一樣的。而且對於形參肯定會變

實參不會變。所以,你中間的maxa變數,其實是子函式的形參變了。但是你的實參沒變

因此結果沒變

改,對於子函式中,你在void max_element_find(struct max_element* maxa,double *a,int n)

max_element_find(&maxa,a,n);這樣就好了

8樓:陽頂天鹿鼎記

#include

#include

#include

struct max_element

//把struct max_element&maxa引數改成引用型別!!!!!!!!!!!!!!!!

} }}

int main()

struct max_element maxa=;

max_element_find(maxa,a,n);

printf("%lf %d %d\n",maxa.date,maxa.row,maxa.col);

free(a);

return 0;}

c語言中如何以結構體變數的位址作為函式形參,以便將指向結構體變數的指標傳遞給它?

9樓:匿名使用者

已經調通了同時以指向結構體變數的指標作為形參和實參,但不知道如何以結構體變數的位址作為形參?

10樓:匿名使用者

結構就是個型別,跟普通型別用法沒有任何區別,別被嚇到了

11樓:匿名使用者

你可以用取引用符的格式作為形參

12樓:也許是個人

以指向結構體變數的指標作為形參struct 結構提名 *指標

13樓:匿名使用者

*p=&ymd;

這句應是

p=&ymd;

c語言中 結構體作為函式引數

14樓:crazy_小豬

1.可以把結構體作為引數啊,

2.不去取位址的意思,是引用的意思,函式執行時修改l的值,就直接的修改了實參的值,相當於位址傳遞了。

3.真正呼叫的時,如下:

sqlist tempstruct;

initlist_sq(tempstruct)這樣就可以了。呵呵

15樓:匿名使用者

可以直接用sqlist l。sqlist& l中的& 並不是取位址的意思,是引用的意思。

16樓:顏海鏡

這是傳引用的意思,不是取位址,這個好像是c++裡的c裡面沒有引用

c語言返回結構體函式返回值應定義哪種型別? 10

17樓:太可怕

你這樣做就不對, student 處在棧區, 這樣返回你沒辦法用另乙個 struct 接收它, 因為在外面 struct 不存在, 所以

首先得定義 struct tagstudent 定在全域性

對於標準c 應該用乙個指標引數

void foo(struct tagstudent *output)

返回值為指標也是不合理的, 因為呼叫者這邊不知道這個返回是分配來的記憶體還是指向乙個全域性變數,有一種情況可以認為就是全域性的變數就是返回值申明為 const struct tagstudent *

c++ 可以用乙個引用引數比較合理

返回結構也並不是不行, 但它可能會產生大的記憶體複製, 如果這個結構很大, 你用乙個結構接收會產生乙個很大的複製過程, 這本身顯得沒必要, 完全可以用乙個指標引數送進去用同乙個記憶體位址處理

18樓:

struct studient

求高手指教c語言函式怎麼返回結構體

19樓:不不見不念

#include "stdio.h"

struct abc

void main(void)

struct abc x=,y;

y=myabc();

printf("%d %d %p\n%d %d %p\n",x.a,x.b,x.p,y.a,y.b,y.p);

20樓:

#include

#include

#include

struct people

;people get_one_people()void main()

不適用 結構體內 有指標型別的結構體.

如果一定要有指標, 最好用c++的引用傳遞 或者 2級指標

21樓:

下面的**告訴你乙個事實:你的想法是可以實現的!

#include "stdio.h"//

struct abc;

struct abc myabc(void)void main(void),y;

y=myabc();

printf("%d %d %p\n%d %d %p\n",x.a,x.b,x.p,y.a,y.b,y.p);

}接收結構變數y必須與返回結構是同乙個型別。

22樓:無情天魔精緻

函式是可以返回結構體的。方法如下:(其它類似)以前以為函式的返回值只能是基本型別,但是今天被高手指出,函式的返回值可以是結構體的,特此編寫了如下的測試程式:讓大家見笑了。

#include

typedef struct str;

str change(str s)

int main(void)

23樓:匿名使用者

不要結構指標是無法返回的。這個是在dll返回結構的說明

extern "c" structresult * winapi do(structs *p0, structs *p1, structv *pv)

24樓:匿名使用者

typedef struct

a;a getstruct()

int main()

c語言讀下列程式,寫出程式的輸出結果

1,1因函式 void swap int a,int b 的第乙個引數a 不是指標,所以 它不會把 函式體內 對 a 的改變 帶回 函式呼叫語句 所在地。而第二個引數b 是指標,所以它能把 交換 結果 帶回來。int a 1,b 2 a,b初值int p b p 指向 bif a printf d,...

c語言程式解析,請問這個c語言程式函式如何解讀?

你的意思是讀一段程式知道它什麼意思嗎?那就照它規則讀嘍。不明白你說的意思!int a 100 定義int型變數a,初始化為100.int 1 100是錯誤的,應該是手誤吧。if a 100 printf d a 100 如果a 100,那麼輸出a 100這個表示式的值,然後換行。else print...

C語言程式程式設計,如何編寫C語言程式

把你的思路想好,想要達到什麼樣的功能,思路清晰後就可以一個一個功能的去寫,出錯了不用急,想一下自己錯在什麼地方,好好的看一下 雖然這樣做會花很多 的時間,但是這樣做會提高自己的閱讀分 能力,啊?書上不是有麼 自己學著寫啊 10.include main printf n 如何編寫c語言程式?首先,你...