结构体学习(一)

  C语言还没入门,慢慢学,急不得。。。

  在《NIOS II的那些事儿》的第一课LED实验中我就遇到了难题。。。

  在生成的 system.h 文件中的PIO配置部分有这么一句:

 

    #define PIO_LED_BASE 0x02000000

 

  我们自己写的 sopc.h 文件是这样的:

    

  在主函数 main.c 中我们是这样用的:

    

  首先就要搞清楚 typedef 的作用,typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。在编程中使用typedef目的一般有两个,一个是给变量一个易记且意义明确的新名字,另一个是简化一些比较复杂的类型声明。

  我们平时用结构体是这样用的  struct  student{...; ...;};这只是声明了一个结构体的类型 struct  student 就像 int ,char 一样,只不过 int, char 是C语言本省规定的,struct  student 是我们自己定义的,我们知道 struct 后面的 student 是结构体名也就是结构体标记,在有些场合是可以省略的,比如:如果一个结构体描述在一个程序中只出现一次。。。本来我们可以用 struct  student 去定义stu_1, stu_2. 但现在有了  typedef  struct (结构体名省略) {...; ...;} PIO_STR;  就相当于跟这个结构体取了个别名,这样可以直接用PIO_STR去定义了,它就相当于 int . 再看2处 (PIO_STR *)  PIO_LED_BASE , 这是一个类型转换,它是把一个无类型的地址转换成一个结构体指针。在定义一个宏,命名为LED,它是指向PIO_LED_BASE的结构体指针。

  

posted on 2011-01-03 20:53  zxl2431  阅读(371)  评论(0编辑  收藏  举报

导航