c语言返回结构体
A. c语言函数中如何返回一个结构体类型
如:
structststst{
inta;
intb;
charc;
}
structstststf1()
{
/*写好代码*/
structstststss={3,5,'J'};
returnss;
}
B. C语言返回结构体函数返回值应定义哪种类型
你这样做就不对, student 处在栈区, 这样返回你没办法用另一个 struct 接收它, 因为在外面 struct 不存在, 所以
首先得定义 struct tagStudent {...} 定在全局
对于标准c 应该用一个指针参数
void foo(struct tagStudent *output)
返回值为指针也是不合理的, 因为调用者这边不知道这个返回是分配来的内存还是指向一个全局变量,有一种情况可以认为就是全局的变量就是返回值申明为 const struct tagStudent *
c++ 可以用一个引用参数比较合理
void foo(struct tagStudent &output)
返回结构也并不是不行, 但它可能会产生大的内存复制, 如果这个结构很大, 你用一个结构接收会产生一个很大的复制过程, 这本身显得没必要, 完全可以用一个指针参数送进去用同一个内存地址处理
C. 请教: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;
}
D. 求高手指教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);
}
(4)c语言返回结构体扩展阅读:
在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚合数据类型(aggregate data type)的一类。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。结构体同时也是一些元素的集合,这些元素称为结构体的成员(member),且这些成员可以为不同的类型,成员一般用名字访问。
C++提供了许多种基本的数据类型(如int、float、double、char等)供用户使用。由于程序需要处理的问题往往比较复杂,而且呈多样化,已有的数据类型显得不能满足使用要求。C++允许用户根据需要自己声明一些类型,用户可以自己声明的类型还有结构体类型(structure)、共用体类型(union)、枚举类型(enumeration)、类类型(class )等,这些统称为用户自定义类型(user-defined type,UDT)。
E. C语言如何返回结构体数组
题设是有问题的
首先你定义了一个结构体_STR_POINT 并且自定义了一个类型STR_POINT
现在你函数的返回值是STR_POINT类型 而你要求返回STR_POINT数组
STR_POINT数组的类型是STR_POINT[]显然预期类型和返回类型不同啊
这是编译器的语法预警