void Init(MyTypeDef* adc) //MyTypeDef 是结构体类型
{
}
引用时是: Init(&InitAdc);
MyTypeDef InitAdc; //MyTypeDef 是结构体类型
不太理解的是函数Init(MyTypeDef* adc)声明时形参怎么要带星号* ,以结构体指针类型来指定参数,可以解释下吗
多谢!
4 个解决方案
#1
形参的星号是指指针,就是结构体类型的指针,函数形参是一个结构体指针,实参也需要一个该结构体类型的指针,也就是要实参是一个地址传给形参;故在函数调用是使用的是&符号,就是区地址,将结构体变量的地址传过去。这样在函数里对于形参的修改就是对实参结构体变量的修改。
#2
Init需要的参数类型是指向这种结构体的指针类型,所以用*
调用时的&是取地址
调用时的&是取地址
#3
声明时,A *a表示a是指向A类型的指针,A &a表示a是A类型的引用;
调用时,*a表示取a指向的内容,&a表示取a的地址。
调用时,*a表示取a指向的内容,&a表示取a的地址。
#4
其实我发帖提问的是,因为还看到有其它的函数 也是这样声明:
void func(MyTypeDef* adc) //MyTypeDef 是结构体类型
{
}
但是引用时却是 func(Initabc); //MyTypeDef Initabc;
此处实参中无取地址符&
这是如何理解的?
#1
形参的星号是指指针,就是结构体类型的指针,函数形参是一个结构体指针,实参也需要一个该结构体类型的指针,也就是要实参是一个地址传给形参;故在函数调用是使用的是&符号,就是区地址,将结构体变量的地址传过去。这样在函数里对于形参的修改就是对实参结构体变量的修改。
#2
Init需要的参数类型是指向这种结构体的指针类型,所以用*
调用时的&是取地址
调用时的&是取地址
#3
声明时,A *a表示a是指向A类型的指针,A &a表示a是A类型的引用;
调用时,*a表示取a指向的内容,&a表示取a的地址。
调用时,*a表示取a指向的内容,&a表示取a的地址。
#4
其实我发帖提问的是,因为还看到有其它的函数 也是这样声明:
void func(MyTypeDef* adc) //MyTypeDef 是结构体类型
{
}
但是引用时却是 func(Initabc); //MyTypeDef Initabc;
此处实参中无取地址符&
这是如何理解的?