新聞中心
C語言函數(shù)中如何返回一個(gè)結(jié)構(gòu)體類型
如:
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、小程序定制開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了炎陵免費(fèi)建站歡迎大家使用!
struct?ststst{
int?a;
int?b;
char?c;
}
struct?ststst?f1()
{
/*寫好代碼*/
struct?ststst?ss={3,5,'J'};
return?ss;
}
求高手指教c語言函數(shù)怎么返回結(jié)構(gòu)體
#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\n%d %d %p\n",x.a,x.b,x.p,y.a,y.b,y.p);
}
擴(kuò)展資料:
在C語言中,結(jié)構(gòu)體(struct)指的是一種數(shù)據(jù)結(jié)構(gòu),是C語言中聚合數(shù)據(jù)類型(aggregate data type)的一類。結(jié)構(gòu)體可以被聲明為變量、指針或數(shù)組等,用以實(shí)現(xiàn)較復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。結(jié)構(gòu)體同時(shí)也是一些元素的集合,這些元素稱為結(jié)構(gòu)體的成員(member),且這些成員可以為不同的類型,成員一般用名字訪問。
C++提供了許多種基本的數(shù)據(jù)類型(如int、float、double、char等)供用戶使用。由于程序需要處理的問題往往比較復(fù)雜,而且呈多樣化,已有的數(shù)據(jù)類型顯得不能滿足使用要求。C++允許用戶根據(jù)需要自己聲明一些類型,用戶可以自己聲明的類型還有結(jié)構(gòu)體類型(structure)、共用體類型(union)、枚舉類型(enumeration)、類類型(class )等,這些統(tǒng)稱為用戶自定義類型(user-defined type,UDT)。
請(qǐng)教:C語言函數(shù)的返回值類型能否為結(jié)構(gòu)體
能
只要在定義函數(shù)時(shí),返回類型聲明你要返回的類型就可以
參考代碼:
//#include "stdafx.h"http://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};//聲明一個(gè)結(jié)構(gòu)體局部變量x并初始化
return x;//返回局部變量結(jié)構(gòu)體x
}
int main(void){
struct ABC y=myfun();//聲明一個(gè)同類型結(jié)構(gòu)體變量y并將函數(shù)返回值賦給它
printf("%s %d\n",y.name,y.n);//打出來看看
return 0;
}
求解一個(gè)c語言函數(shù)返回結(jié)構(gòu)體指針的問題
#includestdio.h
#includestring.h
#includeiostream
#includefstream
#includestdlib.h
using?namespace?std;
typedef?struct?point{????????????????????????????//結(jié)構(gòu)體設(shè)計(jì)
int?A,?B,?C,?a,?b,?c,?id,?n;
}point;
point?*ReadFile(){???????????????
static?point?ss[110];
char?data[50]?=?{'\0'};
int?m1?=?0,?n?=?0,?k,?i;
for(int?i?=?0;?i??100;?i++){
ss[i].id=rand()%10;
ss[i].A=rand()%10;
ss[i].B=rand()%10;
ss[i].C=rand()%10;
ss[i].D=rand()%10;
ss[i].E=rand()%10;
ss[i].F=rand()%10;
}????
return?ss;
}
void?main(){
point?male[110],?female[110],?players[110];
male?=?ReadFile();
}
ss是局部變量,有效范圍只局限于定義ss的函數(shù)體內(nèi),即只在函數(shù)ReadFile里有效,函數(shù)返回后,ss就失效了。
你可以在ReadFile里定義ss的前面加上static修飾,表示這個(gè)是靜態(tài)局部變量,靜態(tài)局部變量的內(nèi)存有效范圍可以全局有效。
static point ss[110];
另外,結(jié)構(gòu)體的typedef定義不完整。
請(qǐng)問c語言如何從函數(shù)返回帶有數(shù)組的結(jié)構(gòu)體?
你說的這種情況,函數(shù)返回的是整個(gè)結(jié)構(gòu)體,無論這個(gè)結(jié)構(gòu)體中包含了多少個(gè)成員,一個(gè)結(jié)構(gòu)體就只是一個(gè)變量(結(jié)構(gòu)體本身就是一個(gè)變量,無論它包含了多少個(gè)成員)。這樣,函數(shù)返回一個(gè)結(jié)構(gòu)體就意味著函數(shù)把結(jié)構(gòu)體中所有的成員都返回了。C語言函數(shù)的確只能有一個(gè)返回值,用返回結(jié)構(gòu)體的方式就很好地解決了需要返回多個(gè)返回值的問題。
return后面沒有0或1,說明這個(gè)函數(shù)是void類型的,這類函數(shù)本來就不需要有返回值,這里的return的意思并不是要返回某個(gè)值,而是退出這個(gè)函數(shù)的意思。
C語言如何返回結(jié)構(gòu)體數(shù)組
題設(shè)是有問題的
首先你定義了一個(gè)結(jié)構(gòu)體_STR_POINT 并且自定義了一個(gè)類型STR_POINT
現(xiàn)在你函數(shù)的返回值是STR_POINT類型? ?而你要求返回STR_POINT數(shù)組
STR_POINT數(shù)組的類型是STR_POINT[]顯然預(yù)期類型和返回類型不同啊
這是編譯器的語法預(yù)警
本文名稱:C語言外部函數(shù)返回結(jié)構(gòu)體,c語言外部函數(shù)內(nèi)部函數(shù)
新聞來源:http://fisionsoft.com.cn/article/dscpjic.html