C语言结构体与函数传参 c语言结构体传入函数

C 语言关于结构体做参数传递?双指针
C语言结构体传参
?
【C语言结构体与函数传参 c语言结构体传入函数】小-黯
原创
关注
7点赞·2315人阅读
目录
C语言结构体传参
1. 普通传参
1.1 测试代码
1.2 测试结果
1.3 结果分析
2. 单指针传参
2.1 修改结构体数据
2.1.1 测试代码
2.1.2 测试结果
2.1.3 结果分析
2.2 修改结构体地址
2.2.1 测试代码
2.2.2 测试结果
2.2.3 结果分析
3. 双指针传参
3.1 测试代码
3.2 测试结果
3.2 结果分析
C语言结构体传参
结构体传参包括三种传参方式
普通传参:函数接收到结构体参数后,会复制一份原来的结构体作为形参供函数使用,而函数内的任何操作都是对拷贝结构体的修改,不会影响到原本的结构体变化 。
单指针传参:函数接收的是一个结构体的地址,该指针指向的是结构体起始地址,也就相当于传入了结构体内所有变量的地址,函数接收到该结构体指针后,我们就可以根据地址访问结构体中每个变量的真实数据,在函数内对结构体内数据的操作,都会影响到原本结构体内数据的变化
双指针传参:函数接收的是结构体指针变量的地址,因为一级指针代表的是结构体的地址,在函数中能够操作结构体内的数据,则二级指针指向的是结构体的地址,则同理我们可以根据二级指针访问修改结构体的地址
即通过一级指针,对结构体内数据的操作会影响到原本结构体内数据的变化
而通过二级指针,对结构体地址的操作会影响到原本结构体地址的变化,例如为结构体分配空间
C语言中,结构体作为函数参数传递,详解?1.可以把结构体作为参数啊,
2.不去取地址的意思,是引用的意思 , 函数执行时修改L的值 , 就直接的修改了实参的值,相当于地址传递了 。
3.真正调用的时,如下:
SqList
tempStruct;
InitList_Sq(tempStruct)
这样就可以了 。
呵呵
c语言问题,在调用函数时可以将结构体变量作为实参传给函数这句话为什么错?不能传回实参,这句话没错吧可以将结构体变量作为实参传给函数的 。这句没错
具体是否可以传回实参 , 要看情况 。
比如 如果结构体里面包含的是值 struct A{int a;}
那么在函数中对参数m做m.a的改变,不会影响实参 。
如果结构体里面包含的是指针,比如 struct A {char *s;}
形参为m的情况下,如果赋值m.s=xxxx 那么不会影响实参
但如果用strcpy(m.s, "xxxxx"); 就会影响实参 。因为实参和形参的s是同一个地址 。
关于c语言中的结构体数组作为函数参数传递的1、结构体数组传给指针,实质上是不可能的,本质上传的是数组首地址,根据偏移来操作数组,这样看起来好像是真在操作数组一样 。就和普通指针一样使用,只不过它是结构体数组 。
2、例程:
typedef struct Student
{
char name[10] ;
int age ;
}Student;
#define LEN 10
//print all Student infomation
void fun(Student *pStu,int len)
{
int i ;
for(i = 0 ;ilen ;i)
{
printf("%s\t%d",pStu[i].name,pStu[i].age) ;
}
}
int main ()
{
Student stu[LEN] ;
fun(stu,LEN) ;
}
有关C语言中结构体变量做函数参数的问题其实C语言结构体与函数传参 , 结构名就是一个变量C语言结构体与函数传参,由于你C语言结构体与函数传参的形参和你C语言结构体与函数传参的实参取名是一样的 。而且对于形参肯定会变
实参不会变 。所以C语言结构体与函数传参,你中间的maxA变量,其实是子函数的形参变了 。但是你的实参没变
因此结果没变
改,对于子函数中,你在void Max_Element_Find(struct Max_Element*maxA,double *A,int n)
Max_Element_Find(maxA,A,n);这样就好了
关于C语言结构体与函数传参和c语言结构体传入函数的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读