扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
1.可以把结构体作为参数啊,
成都创新互联服务项目包括鼓楼网站建设、鼓楼网站制作、鼓楼网页制作以及鼓楼网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,鼓楼网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到鼓楼省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
2.不去取地址的意思,是引用的意思,函数执行时修改L的值,就直接的修改了实参的值,相当于地址传递了。
3.真正调用的时,如下:
SqList
tempStruct;
InitList_Sq(tempStruct)
这样就可以了。
呵呵
其实,结构名就是一个变量,由于你的形参和你的实参取名是一样的。而且对于形参肯定会变
实参不会变。所以,你中间的maxA变量,其实是子函数的形参变了。但是你的实参没变
因此结果没变
改,对于子函数中,你在void Max_Element_Find(struct Max_Element* maxA,double *A,int n)
Max_Element_Find(maxA,A,n);这样就好了
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 ;i len ;++i)
{
printf("%s\t%d",pStu[i].name,pStu[i].age) ;
}
}
int main ()
{
Student stu[LEN] ;
fun(stu,LEN) ;
}
双指针
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语言结构体传参
结构体传参包括三种传参方式
普通传参:函数接收到结构体参数后,会复制一份原来的结构体作为形参供函数使用,而函数内的任何操作都是对拷贝结构体的修改,不会影响到原本的结构体变化。
单指针传参:函数接收的是一个结构体的地址,该指针指向的是结构体起始地址,也就相当于传入了结构体内所有变量的地址,函数接收到该结构体指针后,我们就可以根据地址访问结构体中每个变量的真实数据,在函数内对结构体内数据的操作,都会影响到原本结构体内数据的变化
双指针传参:函数接收的是结构体指针变量的地址,因为一级指针代表的是结构体的地址,在函数中能够操作结构体内的数据,则二级指针指向的是结构体的地址,则同理我们可以根据二级指针访问修改结构体的地址
即通过一级指针,对结构体内数据的操作会影响到原本结构体内数据的变化
而通过二级指针,对结构体地址的操作会影响到原本结构体地址的变化,例如为结构体分配空间
gettimediff 参数类型不对,应该是 LPSYSTEMTIME ,而不是 SYSTEMTIME。其它地方也相应的改一改就行了。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流