C语言定义结构体并赋值后,怎样把整个结构体传递给子函数?
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;
}
展开全部
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;
}
{
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;
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把结构体的指针传递过去就行了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询