typedef用法的几点介绍

typedef  char * pstr;
 int mystrcmp(const pstr, const pstr);      
我们希望表达的是
int mystrcmp( const char*, const char* )
2个指向常量 char的指针

可它被解释后的实际表达式变成了:int mystrcmp( char* const, char* const )  2个指向char的常量指针
const修饰的是pstr,而pstr代表了char *不是char,也就是把指针转换为常量 

修改后写成
 typedef const char* cpstr;
 int myctrcmp( cpstr, cpstr);

2.解释
typedef int* (* pt)(int* (*pn)(int * p1,int *p2),int * p3);
pt p;

确定被声明的类型:遇到typedef时,从左到右进行扫描,找到第一个“陌生”的标志符,这个标志符就应该是语句所声明的
      类型名称。 例如上例中,第一个符合条件的是 pt.那么它就是掩饰的类型,其他的都是为了阅读方便的占位符,可有可无.
      上面的例子等价于:typedef int* (* pt)(int* (*)(int *,int *),int *);

常量:
C语言里 3种定义常量的方法: #define, const,枚举。
      只有枚举是真正的常量, 真正的常量必须是一个右值,只有这样才能保证它是不可修改的。
      但是 const修饰的对象是一个 左值 ,尽管这个对象被限定,但是还是可以通过合法的手段
      修改它。 因此const被 命名为 只读 更加合适
const int i=10;
int *p2=&i;
*p2 = 20; //修改了const的值

typedef static int FAST_COUNTER
         编译错误。

分析:
typedef 跟 static ,auto, extern,register等一样是
存储类型关键字 。编译不通过是因为声明中存在了多
个存储类的关键字.
 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值