C/C++类型系统

 先看下面几个例子:

int i;                 // i为一个变量,类型为int

int* pi;             //pi为一枚指针,所指的类型为int

int ai[N];          //ai为一个数组,数组元素类型为int

int* pai[N];      //pai为一个数组,数组元素类型为int*;

int (*ppai)[N]; //ppai为一枚指针,所指的类型为int[N];

int f(int);         //f为一个函数,类型为int (int);

int (*pf)(int);   //pf为一枚指针,所指的类型为int (int);

接下来我们来看一下类型转换:

(int)var;             //把var强制转换为int型

(int*)var;           // 把var强制转换为int* 型

(int(*)[N])var;    //把var强制转换为int(*)[N];

(int(*)(int))var; //把var强制转换为int(*)(int)型;


从上面的两个例子,可以看出:

   1. 指针的定义只需在变量定义的变量名前面冠以*号
   2. 数组和函数的指针定义要加小括号,因为*的运算优先级比[]和()低
   3. 变量定义语句中,去除变量名,即得到类型(无命名类型)
   4. 类型用()括住,后跟变量名,即强制类型转换

typedef语句的使用:

int ai[N];                  //ai为一个int[N]数组

typedef int tai[N];    //tai为一个类型(命名类型)

tai ai1,ai2;              //ai1,ai2和ai为同一种类型的变量


void (*pf) (int);               //pf为一枚指针,所指类型为 void (int);

typedef void (*tpf) (int); //tpf为一个类型(命名类型)

tpf pf1,pf2;                    //pf1,pf2和pf为同一种类型的变量

上例可以看出:

   1. 在变量定义语句前面加上typedef,得到一个命名的类型
   2. 可以用typedef定义的命名类型定义变量
   3. 命名类型定义的变量与无typedef定义的变量类型相同
   4. typedef可以简化操作

下面举一些typedef简化操作的例子:

typedef int (*tf) (int,int);

tf (*fun_f)(int,tf);

//如果不用typedef,上面的语句为:

// int (*(*fun_f)(int,int (*)(int,int)))(int,int);

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值