C语言_为什么要用二级指针实战
为什么要用二级指针实战
之前的demo:
Demo结果:
Demo结果能够找到输入对应的学生号数,并取出学生的成绩。
上边的案例地址是通过指针函数的方式来做的,让子函数返回一个地址,main函数中通过指针变量来接收并把地址中的内容取出来是ok的,我现在我想把地址不通过指针函数的方式,而是通过传递参数的方式做需要用到二级指针
比如我现在这样写对不对?
此时程序崩了
为什么会崩呢?
因为main函数中这个指针变量pdata是一个野指针!
Pdata并没有初始化,比如pdata现在的地址是0x5566,它会把这个地址传给getData函数形参中的指针,你在getData函数中所有的操作结果都只是在getData函数中有效,然后回到main函数中调用这个指针变量就会发生断错误!因为main函数中的pdata是一个野指针!!!
Segmentation fault断错误
那如何修改呢?使用二级指针把main函数中的pdata指针变量的地址传过去,getData函数中的形参列表使用二级指针来承接,此时getData函数中的二级指针*p2指向pdata;
二级指针就是来承接指针变量的地址的,在getData函数中写*p2 = (int *)(cmd + parrey);把这个地址放到main函数中pdata指针变量中,然后在main函数中对这个地址取内容就ok了。
Demo结果:
当你通过函数调用来修改调用函数指针指向的时候,就像通过函数调用修改某变量的值的时候一样。
下一篇:
【最新版】 Go 工程师大厂面试资料包