使用typedef时,把定义的名字去掉就是数据类型
结尾要加分号
typedef起别名参与的是编译的过程
typedef 起别名时相当于给数据类型换个名字 但是定义好的别名是另一个新的数据类型
比如:
typedef int * point_t
point_t p,q;
此时p和q都是一个指针
point 就是一个新的数据类型,类似于int p,q; p和q都是int类型,而不是简单的替换
附上代码:
#include<stdio.h>
typedef int ___int32_t;
typedef int ___intarr_t[3];
typedef int ___int2arr_t[3][4];
typedef int *___point_t;
typedef int *___parr_t[3];
typedef int (*___arrp_t)[4];
typedef int (*___fp_t)(int ,int);
typedef int (*___fparr_t[2])(int ,int);
int add(int a,int b){
printf("addfunc:%d\n",a+b);
return a+b;
}
int sub(int a,int b){
printf("subfunc:%d\n",a-b);
return a-b;
}
int sum(___fp_t fp){
printf("sumfunc:sum = %d\n",fp(10,20));
}
int main(int argc, const char *argv[])
{
___int32_t a = 10;
printf("a = %d\n",a);
putchar(10);
___intarr_t ar = {9,8,7};
for(int i = 0;i < 3;i++)printf("ar[%d] = %d ",i,ar[i]);
putchar(10);
putchar(10);
___point_t p = ar;
for(int i = 0;i < 3;i++)printf("p[%d] = %d ",i,*(p+i));
putchar(10);
putchar(10);
___int2arr_t arr = {1,2,3,4,5,6,7,8,9,10,11,12};
for(int i = 0;i < 3;i++){
for(int j = 0;j < 4;j++){
printf("%d ",arr[i][j]);
}
putchar(10);
}
putchar(10);
___parr_t pa = {"hello world!","baidu","Godness!"};
for(int i = 0;i < 3;i++){
printf("%s\n",pa[i]);
}
putchar(10);
___arrp_t ap = arr;
for(int i = 0;i < 3;i++){
for(int j = 0;j < 4;j++){
printf("%d ",*(*(ap+i)+j));
}
putchar(10);
}
putchar(10);
___fp_t fp1,fp2;
fp1 = sum(add);
putchar(10);
fp2 = sum(sub);
putchar(10);
___fparr_t fpa;
fpa[0] = add;
fpa[1] = sub;
fpa[0](10,20);
fpa[1](20,10);
return 0;
}