首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

三个关于c语法的有关问题,多谢

2014-01-12 
三个关于c语法的问题,谢谢本帖最后由 u013410394 于 2014-01-07 19:05:22 编辑1.typedef int32_t (*a)(voi

三个关于c语法的问题,谢谢
本帖最后由 u013410394 于 2014-01-07 19:05:22 编辑 1.typedef int32_t (*a)(void);         这里表示什么?
  
2.a_b a=s->c->a;            后面的这个->传递什么呢

3.#define w(){          \
*(ushort *)(config + 0x100e)= 0x556c;      \              这里的\表示什么?
}

这里的三个问题,希望大神帮忙解答下,谢谢。

[解决办法]
1)定义函数指针类型 a,即给函数指针类型 int32_t (*)(void) 类型起个名字,叫做 a;
   这个看任何一本C语言的书,就知道了。

   typedef int32_t (*a)(void);  
   int32_t fun(){return 0;};
   int main(){
   a *pfun = fun; //这是初始化a 类型指针
   printf("pfun() = %d",
          pfun()//这是通过函数指针调用函数。
          ); 
   return 0;
    
   }

2)这是指向运算符-> ; c->a 相当于 (*c).a ,这个看任何一本C语言的书,就知道了,前者是后者的简化写法,后来就固定为一个运算符了。  
3)  \ 是续行符 ,表示这行代码没结束,下一行的和这一行,实际是同一行代码。
PS:
只有3)比较偏僻,1)2)只要看书能够知道。

[解决办法]
引用:
谢谢大神,你已经讲得很详细了,可是我还得细细想想,第一个和第二个还不是特别懂,第二个的a->b->c这样死连续调用吗

是的,a->b的返回值在调用c
[解决办法]
学然后知不足。
[解决办法]
引用:
3也不能算偏!基础没有看啊

3)应该有点偏的。
理由如下:
a) 很多入门书(可能很垃圾)不会讲续行符的,毕竟这不是一种运算符,也不是普通的分隔符。
   多半都是用在宏定义的地方。
b)虽然,续行符,可以用在任何其他地方,基本上,别的地方都不会用续行符。
因为通常来说,不用续行符,和使用续行符,没有多大区别,除非用于宏定义。

c)相信,没有几个人,在非宏定义中,使用续行符。
  所以,有些入门书不讲续行符,也是有谅可原的。



热点排行