C语言定义结构体并赋值后,怎样把整个结构体传递给子函数?

 我来答
zhy910827
2014-04-02 · TA获得超过103个赞
知道答主
回答量:79
采纳率:0%
帮助的人:49.3万
展开全部

使用堆内存,然后传递一个指向这个结构体的指针就可以了,

或者直接向子函数传递结构体变量.

比如:

#include <stdio.h>
#include <malloc.h>

typedef struct STRC_def{
int i;
int j;
}STRC;


int Func1(STRC * pSTRC);
int Func2(STRC aSTRC);


int main()
{

STRC * a =(STRC *)malloc(sizeof(STRC));//使用堆内存
STRC b;//使用栈内存
a->i=0;//初始化
a->j=0;
b.i=0;
b.j=0;
Func1(a);//传递指针
Func2(b);//传递变量
printf("a: %d %d\nb: %d %d\n",a->i,a->j,b.i,b.j);//结果应该是 a: 1 2 \n b: 0 0
//因为传递指针使用的是同一个存储位置,而传递变量使用的是内容复制的存储位置
return 0;
}

int Func1(STRC * pSTRC)
{
pSTRC->i=1;
pSTRC->j=2;
return 0;
}

int Func2(STRC aSTRC)
{
aSTRC.i=3;
aSTRC.j=4;
return 0;
}
xl533lx
推荐于2018-10-18 · 超过19用户采纳过TA的回答
知道答主
回答量:48
采纳率:0%
帮助的人:44.6万
展开全部
typedef struct
{
int a;

int b;

}STRU;

void fun(STRU *s)
{
printf("a = %d,b = %d\n", s->a, s->b);

}
int main
{
STRU s;
s.a = 1;
s.b = 2;
fun(&s)
return 0;

}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
玄冰绝尘
2014-04-02 · TA获得超过487个赞
知道小有建树答主
回答量:167
采纳率:0%
帮助的人:198万
展开全部
把结构体的指针传递过去就行了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式