本帖最后由 mylovedream 于 2017-7-9 18:52 编辑
各位好,为什么结构体初始化的时候,用指针赋值不行?用 . 却可以?具体表现是编译两种方法都可以通过,但是用指针赋值下载到板子没反应。
原代码:- void LED_GPIO_Config(void)
- {
- GPIO_InitTypeDef GPIO_InitStructure;
- RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOC, ENABLE);
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_Init(GPIOC, &GPIO_InitStructure);
- GPIO_SetBits(GPIOC, GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5); // turn off all led
- }
复制代码
有问题的代码:
- void LED_GPIO_Config(void)
- {
- GPIO_InitTypeDef *GPIO_InitStructure;
- RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOC, ENABLE);
- GPIO_InitStructure->GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5;
- GPIO_InitStructure->GPIO_Mode = GPIO_Mode_Out_PP;
- GPIO_InitStructure->GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_Init(GPIOC, GPIO_InitStructure);
- GPIO_SetBits(GPIOC, GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5); // turn off all led
- }
复制代码
|
这样就可以了。
评分
查看全部评分
评分
查看全部评分
地板的解释,跟我要说的一样
如果实例对象是个指针,那么通过->引用该对象的成员;
如果示例对象不是指针,那么通过.引用该对象的成员。
你的代码会在栈上多一个没必要的指针。
用如下的代码即可:
引用声明为指针的结构体,用->才能获取成员
如果是指针,就要用‘->’。9喽已经有说明了