當前位置:首頁 » 編程語言 » c語言返回值結構體

c語言返回值結構體

發布時間: 2023-06-10 00:07:15

『壹』 c語言如何返回結構體數組

題設是有問題的

首先你定義了一個結構體_STR_POINT 並且自定義了一個類型STR_POINT

現在你函數的返回值是STR_POINT類型 而你要求返回STR_POINT數組

STR_POINT數組的類型是STR_POINT[]顯然預期類型和返回類型不同啊

這是編譯器的語法預警

『貳』 C語言中函數的返回值可以一個結構類型嗎

可以的粗基 比如在做鏈表的增刪改查時基本上都會用到裂基返回結構體類型,如返回頭結點。你可以到網上肆凳謹看看關於鏈表的例子。相信你會明白的。

『叄』 C語言函數中如何返回一個結構體類型

如:
structststst{
inta;
intb;
charc;
}

structstststf1()
{
/*寫好代碼*/
structstststss={3,5,'J'};
returnss;
}

『肆』 請教:C語言函數的返回值類型能否為結構體


只要在定義函數時,返回類型聲明你要返回的類型就可以
參考代碼:
//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
#include "string.h"
struct ABC{
char name[20];
int n;
};
struct ABC myfun(void){
struct ABC x={"Lining",99};//聲明一個結構體局部變數x並初始化
return x;//返回局部變數結構體x
}
int main(void){
struct ABC y=myfun();//聲明一個同類型結構體變數y並將函數返回值賦給它
printf("%s %d\n",y.name,y.n);//打出來看看
return 0;
}

『伍』 C語言返回結構體函數返回值應定義哪種類型

你這樣做就不對, student 處在棧區, 這樣返回你沒辦法用另一個 struct 接收它, 因為在外面 struct 不存在, 所以
首先得定義 struct tagStudent {...} 定在全局
對於標准c 應該用一個指針參數
void foo(struct tagStudent *output)
返回值為指針也是不合理的, 因為調用者這邊不知道這個返回是分配來的內存還是指向一個全局變數,有一種情況可以認為就是全局的變數就是返回值申明為 const struct tagStudent *

c++ 可以用一個引用參數比較合理
void foo(struct tagStudent &output)

返回結構也並不是不行, 但它可能會產生大的內存復制, 如果這個結構很大, 你用一個結構接收會產生一個很大的復制過程, 這本身顯得沒必要, 完全可以用一個指針參數送進去用同一個內存地址處理

『陸』 求高手指教c語言函數怎麼返回結構體

#include "stdio.h"

struct abc{

int a;

int b;

char *p;

};

struct abc myabc(void){

struct abc n;

n.a=2;

n.b=3;

n.p=(char *)0x00FF3304;

return n;

}
void main(void)

{

struct abc x={1,2,(char *)0x00FF3300},y;

y=myabc();

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

}

(6)c語言返回值結構體擴展閱讀:

在C語言中,結構體(struct)指的是一種數據結構,是C語言中聚合數據類型(aggregate data type)的一類。結構體可以被聲明為變數、指針或數組等,用以實現較復雜的數據結構。結構體同時也是一些元素的集合,這些元素稱為結構體的成員(member),且這些成員可以為不同的類型,成員一般用名字訪問

C++提供了許多種基本的數據類型(如int、float、double、char等)供用戶使用。由於程序需要處理的問題往往比較復雜,而且呈多樣化,已有的數據類型顯得不能滿足使用要求。C++允許用戶根據需要自己聲明一些類型,用戶可以自己聲明的類型還有結構體類型(structure)、共用體類型(union)、枚舉類型(enumeration)、類類型(class )等,這些統稱為用戶自定義類型(user-defined type,UDT)。

『柒』 c語言中函數返回值可以是數組、字元串和結構體嗎

//語法編碼規則的角度看
ANSIC語言標准,明確規定數組類型和函數類型不可以做為返回值。

解決這種返回值的方法是通過指針來間接返回,即使用數組指針和函數指針。這可以做為c語言引入指針的另一個理由。

結構體類型可以做為返回值,我猜測C語言設計者當時引入struct結構體的概念,目的是為了增加一種建立C語言新類型的機制,換句話說它希望通過struct建立的類型,像內置的int float類型一樣使用方便。

//從匯編角度來看
有兩種返回值方法,第一種是直接返回到寄存器的,第二種是類似於結構體返回值的那樣建立臨時存儲區的返回方式

比如int 返回值類型、指針返回值類型,在ia32平台上都是直接返回到eax寄存器不管是vc還是gcc,對於像float 類型的浮點返回值類型,在ia32平台,往往藉助於fpu浮點運算器部件中的寄存器存儲於棧中,第三類就是像struct結構體返回值,它需要建立臨時對象,對於c語言來說引入一個臨時內在區域是問題不大的,但是對於c++這個有時候是致命的。

我是菜鳥,希望能幫到你,觀樓主英俊瀟灑,風流倜儻,必當世豪傑,誠邀加入0x30網路貼吧,共商義舉,建不世之功!

『捌』 C語言結構體函數的返回值是結構體結構體變數中的信息

你說的這種情況,函數返回的是整個結構體,無論這個結構體中包含了多少個成員,一個結構體就只是一個變數(結構體本身就是一個變數,無論它包含了多少個成員)。這樣,函數返回一個結構體就意味著函數把結構體中所有的成員都返回了。C語言函數的確只能有一個返回值,用返回結構體的方式就很好地解決了需要返回多個返回值的問題。
return後面沒有0或1,說明這個函數是void類型的,這類函數本來就不需要有返回值,這里的return的意思並不是要返回某個值,而是退出這個函數的意思。

熱點內容
安卓系統密碼忘了怎麼辦 發布:2025-02-13 21:49:28 瀏覽:971
找回密碼發送信息是什麼意思 發布:2025-02-13 21:49:26 瀏覽:639
織夢通用源碼 發布:2025-02-13 21:48:41 瀏覽:438
pid演算法調速 發布:2025-02-13 21:20:31 瀏覽:686
腳本中new 發布:2025-02-13 21:00:11 瀏覽:741
什麼配置的筆記本電腦能玩神武 發布:2025-02-13 20:54:40 瀏覽:179
挑選雲伺服器需要注意什麼 發布:2025-02-13 20:53:31 瀏覽:98
加密滴膠卡 發布:2025-02-13 20:30:48 瀏覽:275
javalogin 發布:2025-02-13 20:25:48 瀏覽:427
智聯招聘無法上傳照片 發布:2025-02-13 20:16:03 瀏覽:529