Chinaunix

标题: 寻求一个指针的解说 [打印本页]

作者: unifoxz    时间: 2011-12-05 23:31
标题: 寻求一个指针的解说
有一个关于指针的问题:

uart_amba_port 结构为:

  1. struct uart_amba_port {
  2.         struct uart_port        port;
  3.         struct clk                *clk;
  4.         unsigned int                im;        /* interrupt mask */
  5.         unsigned int                old_status;
  6.         unsigned int                ifls;        /* vendor-specific */
  7.         bool                        autorts;
  8. };
复制代码


请帮忙说明以下这一行:这uap到底是被定义成什么了?

  1.         struct uart_amba_port *uap = (struct uart_amba_port *)port;
复制代码


我的基础差了些,请大家多多包涵。

谢谢。
作者: gogly8723    时间: 2011-12-06 09:07
struct uart_amba_port指针,uap最后的一个P已经很明显了
作者: unifoxz    时间: 2011-12-06 09:25
谢谢,我想知道的是 针对指针的说明, struct uart_amba_port *uap  是怎么等于  (struct uart_amba_port *)port 的?
  1.   struct uart_amba_port *uap = (struct uart_amba_port *)port;
复制代码
为什么 (struct uart_amba_port *)port 不写成  struct uart_amba_port *port ?
作者: npuazm    时间: 2011-12-06 09:44
struct uart_amba_port *uap = (struct uart_amba_port *)port;
这句话的意思是定义一个uart_amba_port 类型的指针 变量名是uap,
把该变量赋值为port,由于port 是一个地址,所以把要该地址强制转换为  uart_amba_port 类型的指针
作者: juruqiang    时间: 2011-12-06 09:53
找本C看下吧,最基本的类型强制转换。
作者: unifoxz    时间: 2011-12-06 11:08
struct uart_amba_port *uap = (struct uart_amba_port *)port;
这句话的意思是定义一个uart_amba_port 类 ...
npuazm 发表于 2011-12-06 09:44


这个太感激了!
还有一个延伸的疑问是:这 port 的值与下列结构中的 port 有任何联系吗?
  1. struct uart_amba_port {
  2.         struct uart_port        port;
  3.         struct clk                *clk;
  4.         unsigned int                im;        /* interrupt mask */
  5.         unsigned int                old_status;
  6.         unsigned int                ifls;        /* vendor-specific */
  7.         bool                        autorts;
  8. };
复制代码
谢谢!
作者: unifoxz    时间: 2011-12-06 11:09
回复 5# juruqiang

谢谢!正想着该从哪处着手呢!谢谢提点。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2