c语言函数能不能返回结构体

如果不用指针呢

c语言函数可以返回结构体,操作方法如下:

1、首先在电脑中打开visual studio新建项目,给这个结构体取个名字叫student。

2、然后添加变量,如下图所示。

3、然后给结构体类型指针p申请堆空间,如下图所示。

4、接着使用for循环给结构体赋值,如下图所示。

5、最后在通过for循环打印输出,这样就完成就结构体的基本创建,结尾不要忘了使用free(p):释放申请的堆空间。

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-10-04

能。主调函数必须用相同类型的结构体变量接收!举例代码如下:

//#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;
}

第2个回答  2008-11-02
当然能返回结构体的,不过是需要用指针来返回的.

下面我编写一个简单的实例,你就清楚了

#include<stdio.h>

struct lab
{
char a;
char b;
char c;
};

struct lab Lab_Val={0,1,2}; //声明结构体变量
struct lab *pLab; //声明结构体指针

//----返回结构体指针,之后就可以用该指针访问结构体中所有的变量了
struct lab *test(struct lab *pStruct)
{
pStruct->a=pStruct->a+1;
pStruct->b=pStruct->b+2;
pStruct->c=pStruct->c+3;
return(pStruct);
}

//==============================================================

void main(void)
{
char i,j,k;
pLab = test(&Lab_Val); //调用函数
i=pLab->a; //引用指针,i=1
j=pLab->b; //j=3
k=pLab->c; //k=5
}
第3个回答  2008-11-02
可以.

例如常用的typedef 可以把结构体定义成一种新的"变量类型",语法上就同int,float这种简单变量类型一样. c语言函数就能return了.
第4个回答  2008-11-02
当然能呀
只要在定义函数时,返回类型声明你要返回的类型就可以呵本回答被提问者采纳
相似回答