typedef

问:b的类型是什?
typedef char * a;
const a b;
答: b的类型是  char * const

类型声明的时候有一个type specifier. 基本类型都属于这个范围, 比如char, int, long.
比较特别的是 struct, union, enum还有typedef都属于type specifier. 所以在给type specifier加const修饰符的时候, 是加在struct, union, enum和typedef上面的, 就和加在int上面一样.

所以如果
typedef int * a;

a是一个typdef后的类型, 具体点讲是指向int的指针. 这时候如果有const a b, 这里的a是作为type spcifier出现, const会加在a上面, 所以b就成了const的指向int的指针.

还有比较特别的是const加在struct或者union上的时候.

如果有
struct a
{
        int b;
        const int c;
};

那么const struct a b;相当于把const加在struct a的每个items上, 此时的b相当于
struct c
{
        const int b;
        const int c;
} b;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值