野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 13465|回复: 7

初始化GPIOB时为什么第二个参数要放取地址符“&”而第一个参数不用?

[复制链接]
发表于 2014-12-5 11:27:53 | 显示全部楼层 |阅读模式
对GPIO端口进行初始化时有这样的语句:
  1. GPIO_Init(GPIOB, &GPIO_InitStructure);
复制代码
函数的原型为:
  1. void  GPIO_Init (GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_InitStruct)
复制代码
两个参数,同样是指针,为什么第二个参数输入时要用取地址符“&”?
回复

使用道具 举报

发表于 2014-12-5 11:28:39 | 显示全部楼层
GPIO_InitStructure是指针吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-5 11:30:17 | 显示全部楼层
flyleaf 发表于 2014-12-5 11:28
GPIO_InitStructure是指针吗?

是GPIO_InitTypeDef类型的结构体,但是加了*号是不是成了结构体指针?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-5 11:32:14 | 显示全部楼层
flyleaf 发表于 2014-12-5 11:28
GPIO_InitStructure是指针吗?

那引用时为什么要放取地址符?这个不理解
回复 支持 反对

使用道具 举报

发表于 2014-12-5 11:40:58 | 显示全部楼层
草原上的星星 发表于 2014-12-5 11:30
是GPIO_InitTypeDef类型的结构体,但是加了*号是不是成了结构体指针?

函数的形参当然是指针
但你定义的变量GPIO_InitStructure
不是这样定义的吗:
GPIO_InitTypeDef GPIO_InitStructure
这样定义的 GPIO_InitStructure 难道是指针?作为函数的参数输入是就是要加&取地址变成指针,

除非你定义GPIO_InitStructure的时候,使用
GPIO_InitTypeDef* GPIO_InitStructure


别把函数的形参GPIO_InitStruct和你的变量GPIO_InitStructure搞混了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-5 11:49:23 | 显示全部楼层
flyleaf 发表于 2014-12-5 11:40
函数的形参当然是指针
但你定义的变量GPIO_InitStructure
不是这样定义的吗:

哦,原来是这样,茅塞顿开。听君一席话,胜读十年书
回复 支持 反对

使用道具 举报

发表于 2014-12-5 11:55:35 | 显示全部楼层
草原上的星星 发表于 2014-12-5 11:49
哦,原来是这样,茅塞顿开。听君一席话,胜读十年书

有这么夸张。。。。
回复 支持 反对

使用道具 举报

发表于 2014-12-5 14:09:09 | 显示全部楼层
草原上的星星 发表于 2014-12-5 11:49
哦,原来是这样,茅塞顿开。听君一席话,胜读十年书

你可以不用去读书了,天天听他说话去
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-9-29 02:13 , Processed in 0.027652 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表