结构体指针形参使用方法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

结构体指针形参使用方法
我跟你说啊,结构体指针形参这玩意儿,我一开始真的是瞎摸索。

那时候我就知道结构体这东西挺有用的,能把相关的数据都放在一起。

可一涉及到结构体指针形参,我就懵了。

我试过直接传结构体,但是后来发现不太对。

比如说,我写了个函数来处理结构体里的数据,要是直接传结构体,每次函数调用的时候就会把整个结构体的数据都复制一份。

这就好比你要把一整套工具从一个地方搬到另一个地方,每次都搬整套就太麻烦了。

然后我就开始尝试结构体指针形参。

我一开始搞不清楚怎么在函数里用这个指针去访问结构体里的数据。

我就这么乱试,最开始我以为像普通指针那样用就好了,结果错得一塌糊涂。

后来我才明白,你得先确保这个指针指向的结构体是有意义的,就好比你要去一个房子拿东西,你得先找对房子。

就拿一个简单的例子来说,我定义了一个结构体来表示学生的信息,里面有名字和年龄。

//定义结构体
struct student {
char name[20];
int age;
};
当我用函数来修改学生的年龄时,如果用结构体指针形参,函数定义大概就是这样的:
void changeAge(struct student stu) {
//这里我一开始忘了加
//写成stu->age = 20; 实际上应该是(stu).age = 20;
(stu).age = 20;
}
要是像我之前那样写错的话,编译可能都过不了。

这里就是我容易犯错的地方。

还有就是在函数调用的时候,要注意传的是结构体的地址。

像这样:
struct student stu = {"Tom", 18};
changeAge(&stu);
通过这个例子我就渐渐明白了。

我还想到,要是这个指针是空指针,那也会出大问题呢。

所以在函数里,最好先判断一下指针是不是空指针。

这就像是你要进一个房子,得先看看这房子是不是存在。

我在处理结构体指针形参的时候还遇到过数据修改在函数里做了,但是外面却没生效的情况。

后来才知道,原来是我没有理解指针赋值和值传递的差别。

这就好比你以为你在别人房子里改了东西,结果只是改了个副本,原房子一点没变。

这就是我在结构体指针形参使用方法上的一些经验和经历,希望对你有点帮助。

不过我也不敢说我全部都精通了,我还在不断学习呢。

我总觉得多做一些实际的例子,多错几次,然后慢慢就真的会用了。

相关文档
最新文档