书山有路勤为径------2018年元旦

2019-08-13 18:48发布

算算时间过得真快,已经进入8月了,还有5个月就要元旦了,开篇帖子记录自己学习STM32的经历。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
24条回答
刘东君
2019-08-17 05:10
继续,项目忙完了,接着搞起。

结构体与指针:


声明如下结构体:
typedef struct _BlockType_t
{
    unsigned long k;
    unsigned long * stackPtr;       
       
}BlockType_t;


定义两个变量:
BlockType_t  block;
BlockType_t * blockPtr;



void main()
{
       block.k=0x123;                                                              //结构体的成员变量赋值
       block.stackPtr=(unsigned long *) 0x2000 0011;              // 结构体成员变量赋值,因为成员stackPtr为指针变量,所以要赋值地址
       *( unsigned long *) (0X20000011 )=0x6;                       //向地址2000 0011写入数据0x6;
      *(block.stackPtr)=0x08;                                                //向地址2000 0011写入数据0x8;
      blockPtr = █                                                        //向结构体类型指针blockPtr赋地址
      while(1);
}

下面调试:

&block           地址:2000  0000
&block.k        地址: 2000 0000
block.k          值:0x123; 存放在 地址2000 0000

&block.stackPtr   地址:2000 0004
block.stackPtr     值:2000 0011(仍然是地址)——>值06,08;


blockPtr ->k    值0x123;
&(blockPtr ->k )   地址:2000 0000


注意下列写法错误:
blockPtr.k
blockPtr. stackPtr   

因为blockPtr是指针变量!blockPtr是指针变量!blockPtr是指针变量!而不是结构体变量。








一周热门 更多>