Ⅰ c语言能向函数里传递任意一个结构体吗
参数类型改成
void*
,传的时候传指针,
使用的时候再强制转换成想要的类型。注意类型安全
Ⅱ C语言结构体Struct怎么使用
在Turbo C中,结构也是一种数据类型, 可以使用结构变量,因此,像其它类型的变量一样,在使用结构变量时要先对其定义。
如果需要定义多个具有相同形式的结构变量时用这种方法比较方便,它先作结构说明,再用结构名来定义变量。
(2)c语言传递结构体扩展阅读
指向结构体的指针是一个一直都没有掌握好的点,希望这里能记录好一点,加强理解。
对于指针有几个好处,
第一:就像指向数组的指针比数组本身更容易操作一样,指向结构的指针通常也更容易操作;
第二:在早期的C中参数传递只能使用结构的指针;
第三:很多奇妙的数据表示都是用了包含指向其他结构的指针的结构。
和数组不同,结构的名字不是该结构的地址(即单独的结构名并不是该结构地址的同义词),必须使用 & 运算符。
参考资料c语言结构体struct相关使用说明
Ⅲ C语言定义结构体并赋值后,怎样把整个结构体传递给子函数
使用堆内存,然后传递一个指向这个结构体的指针就可以了,
或者直接向子函数传递结构体变量.
比如:
#include<stdio.h>
#include<malloc.h>
typedefstructSTRC_def{
inti;
intj;
}STRC;
intFunc1(STRC*pSTRC);
intFunc2(STRCaSTRC);
intmain()
{
STRC*a=(STRC*)malloc(sizeof(STRC));//使用堆内存
STRCb;//使用栈内存
a->i=0;//初始化
a->j=0;
b.i=0;
b.j=0;
Func1(a);//传递指针
Func2(b);//传递变量
printf("a:%d%d b:%d%d ",a->i,a->j,b.i,b.j);//结果应该是a:12 b:00
//因为传递指针使用的是同一个存储位置,而传递变量使用的是内容复制的存储位置
return0;
}
intFunc1(STRC*pSTRC)
{
pSTRC->i=1;
pSTRC->j=2;
return0;
}
intFunc2(STRCaSTRC)
{
aSTRC.i=3;
aSTRC.j=4;
return0;
}
Ⅳ c语言udp通信能传结构体吗
不能传结构体。
主要是三个方法:
int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen)
ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,
const struct sockaddr *dest_addr, socklen_t addrlen)
ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,
struct sockaddr *src_addr, socklen_t *addrlen)
Ⅳ 关于c语言中的结构体数组作为函数参数传递的
1、结构体数组传给指针,实质上是不可能的,本质上传的是数组首地址,根据偏移来操作数组,这样看起来好像是真在操作数组一样。就和普通指针一样使用,只不过它是结构体数组。
2、例程:
typedefstructStudent
{
charname[10];
intage;
}Student;
#defineLEN10
//printallStudentinfomation
voidfun(Student*pStu,intlen)
{
inti;
for(i=0;i<len;++i)
{
printf("%s %d",pStu[i].name,pStu[i].age);
}
}
intmain()
{
Studentstu[LEN];
fun(stu,LEN);
}
Ⅵ 关于c语言结构体形参传递的问题
一个要求数据返回,一个只是参数传递而不要求有返回。在C中使用*号代表地址引用,也就是说你传递过去的是一个实际的地址参数值,在编译器中,参数的传递如果不要求有地址返回,在编译过程中会新产生一个临时变量来存储你传递的型参,也就是说,传递过去的只是一个重新被赋值过的变量,这个变量是临时的,在使用后就会被系统收回,达不到返回的目的。
Ⅶ C语言函数怎么传结构体指针
#include<stdio.h>
#include<stdlib.h>
#defineLINE_MAX80
structbody{
chardata[100];//要定义成数组才可以,不然,还要去分配内存
intnum;
};
voidcreate(structbody*bd);//结构体定义后,才能使用结构体类型,所以,移动到定义之后
intmain(intargc,char*argv[]){
intchoose;
structbody*bd;
bd=(structbody*)malloc(sizeof(structbody));
while(1)
{
printf("*******************欢迎来到文章编辑系统******************** ");
printf("1.创建新文本 ");
printf("2.统计文本 ");
printf("5.退出系统 ");
printf("请选择你需要的功能的序号:");
scanf("%d",&choose);
switch(choose)
{
case1:
printf("创建新文本 ");
create(bd);
continue;
case2:
printf("统计文本 ");
continue;
case5:
printf("谢谢您的使用! ");
break;
default:
printf("请正确输入! ");
continue;
}
if(choose==5)
break;
}
return0;
}
voidcreate(structbody*bd)
{
printf("编辑文本,Enter键保存 ");
scanf("%s",bd->data);//结构体指针引用成员用->,同时,格式串应该是%s
printf("您输入的文本是:%s ",bd->data);//同上
}
Ⅷ C语言结构体传递问题
可以。~
struct TempleA
{
int a;
};
TempleA a;
a.a = 0;
TempleB b;
b = a;
//b.a一定就是0了。~赋值成功了~ 更大一点也行。只要是一个结构体类型。
Ⅸ c语言里面的结构体是什么意思
结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合,叫做结构。
在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚合数据类型(aggregate data type)的一类。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。
结构体同时也是一些元素的集合,这些元素称为结构体的成员(member),且这些成员可以为不同的类型,成员一般用名字访问。
(9)c语言传递结构体扩展阅读
将一个结构体变量中的数据传递给另一个函数,有下列3种方法:
(1) 用结构体变量名作参数。一般较少用这种方法。
(2) 用指向结构体变量的指针作实参,将结构体变量的地址传给形参。
(3) 用结构体变量的引用变量作函数参数。
在软件开发过程中,常常需要动态地分配和撤销内存空间,例如对动态链表中结点的插入与删除。C语言中是利用库函数malloc和free来分配和撤销内存空间的。