C语言定义函数形参是结构体指针,引用函数时参数用的是(&+结构体变量)

ruiruio4 2017-04-06 09:27:57
函数原型声明定义是:
void Init(MyTypeDef* adc) //MyTypeDef 是结构体类型
{
}
引用时是: Init(&InitAdc);
MyTypeDef InitAdc; //MyTypeDef 是结构体类型

不太理解的是函数Init(MyTypeDef* adc)声明时形参怎么要带星号* ,以结构体指针类型来指定参数,可以解释下吗
多谢!

...全文
1219 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2017-04-07
  • 打赏
  • 举报
回复
声明时,A *a表示a是指向A类型的指针,A &a表示a是A类型的引用; 调用时,*a表示取a指向的内容,&a表示取a的地址。
ruiruio4 2017-04-07
  • 打赏
  • 举报
回复 1
引用 1 楼 cfjtaishan 的回复:
形参的星号是指指针,就是结构体类型的指针,函数形参是一个结构体指针,实参也需要一个该结构体类型的指针,也就是要实参是一个地址传给形参;故在函数调用是使用的是&符号,就是区地址,将结构体变量的地址传过去。这样在函数里对于形参的修改就是对实参结构体变量的修改。
其实我发帖提问的是,因为还看到有其它的函数 也是这样声明: void func(MyTypeDef* adc) //MyTypeDef 是结构体类型 { } 但是引用时却是 func(Initabc); //MyTypeDef Initabc; 此处实参中无取地址符& 这是如何理解的?
paschen 2017-04-06
  • 打赏
  • 举报
回复
Init需要的参数类型是指向这种结构体的指针类型,所以用* 调用时的&是取地址
自信男孩 2017-04-06
  • 打赏
  • 举报
回复
形参的星号是指指针,就是结构体类型的指针,函数形参是一个结构体指针,实参也需要一个该结构体类型的指针,也就是要实参是一个地址传给形参;故在函数调用是使用的是&符号,就是区地址,将结构体变量的地址传过去。这样在函数里对于形参的修改就是对实参结构体变量的修改。

70,038

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧