c语言指向结构体的指针作为函数参数

时间:2024-01-19 15:11:20

注意

这里包括形参和实参

struct dangdangtest
{ char name[]; int num; }; void change(int num)//值传递 新建一个变量接受传递的值
{
num = ;
} //使用结构体作为参数 浪费内存 需要建立结构体
void change2(struct dangdangtest ddt)
{
ddt.num = ;
printf("\nmain=%p,%p",ddt,&ddt.num);//函数内部结构体地址
}
//函数内部改变需要地址 所以需要指针保存
void changeall(struct dangdangtest *p) {
(*p).num = ;//*根据地址取出内容
}
void main5()
{
struct dangdangtest ddt;
ddt.num = ;
sprintf(ddt.name,"adf");//初始化
printf("\nmain=%p,%p",ddt,&ddt.num);//main函数内部结构体地址
/*change(ddt.num);
printf("%d",ddt.num);99*/ /*change2(ddt);
printf("%d",ddt.num);*/
changeall(&ddt);
printf("\n%d",ddt.num);
getchar();
} //参数对于数组来说传递的是地址 4个字节
void datatest(struct dangdangtest ddd[])
{
printf("datatest=%d",sizeof(ddd));
} void dtc(struct dangdangtest ddd[])
{
ddd[].num = ;
sprintf(ddd[].name,"");//前面有提过
printf("datatest=%d",sizeof(ddd));
}
void main()
{
struct dangdangtest ddd[];//10个元素 36*10 struct dangdangtest *p = ddd;
printf("\n%d",sizeof(ddd));//
ddd[].num = ;
sprintf(ddd[].name,"dfasdf");
/*datatest(ddd);
printf("main=%d",sizeof(ddd));*/
getchar();
}