Loading... <div class="tip inlineBlock info"> typedef的作用:给以有的变量取别名 </div> #### **typedef使用步骤:** 1. 先用**已有**的类型定义一个变量 2. 用 **别名** 替换 **变量**名 3. 在整个表达式前 添加typedef --- * 一般定义在函数外边,含大写字母 <div class="tip inlineBlock warning"> 注意:不能创造新的类型 </div> --- **test1:给int 取别名INT32** ```C #include<stdio.h> typedef int INT32;//用typedef定义变量通常放外边 void test1() { INT32 num = 10; printf("num =%d\n", num);//10 } int main(int argc, char* argv[]) { test1(); return 0; } ``` 是不是很简单?^_^ --- **test2:给数组取别名ARR_TYPE** ```C #include<stdio.h> typedef int ARR_TYPE[5]; void test2() { ARR_TYPE arr; //arr就是一个拥有5个元素 每个元素为int 的 数组 ARR_TYPE array = { 1,2,3,4,5 }; //可以直接这样赋初值 int i; for (i = 0; i < 5; i++) { printf("%d ", array[i]); } } int main(int argc, char* argv[]) { test2(); return 0; } ``` 是不是也就这样?^_^ --- **test3:给指针取一个别名** ```C #include<stdio.h> typedef int *P_TYPE; void test3() { int num = 10; P_TYPE p = &mun;//P_TYPE == int *p printf("*p = %d\n", *p); } int main(int argc, char* argv[]) { test3(); return 0; } ``` 注意P_TYPE == int *p,有点东西。>_< --- **test4:函数指针别名** --- 糟糕,有点忘了什么是函数指针,上哔哩哔哩>_< <iframe class="iframe_video" src="//player.bilibili.com/player.html?aid=372528286&bvid=BV1XZ4y1G7No&cid=249269609&page=34" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"> </iframe> * 直接跳转到视频第44分钟 举例:函数指针 ```C #include<stdio.h> //函数名代表函数的入口地址 int my_add(int x, int y) { //my_add代表的是函数的入口地址 return x + y; } void test4() { //定义一个地址变量 保存该函数的入口地址 int (*p)(int x, int y) = my_add;//这就是函数指针 本质是指针变量 printf("%d\n", p(100, 200));//这里p不用加*用为定义时是*p } int main(int argc, char* argv[]) { test4(); return 0; } ``` 好了正式开始^_^: ```C #include<stdio.h> typedef int (*P_FUN)(int x, int y); //P_FUN是一个函数指针类型 该函数 必须有两个int形参 以及一个int返回值 int my_add(int x, int y) { //my_add代表的是函数的入口地址 return x + y; } void test4() { P_FUN p = my_add; printf("%d\n", p(100, 200)); } int main(int argc, char* argv[]) { test4(); return 0; } ``` 这个真的 先记好怎么定义的 --- **test5:结构体类型别名(该来的还是来了)** ```C #include<stdio.h> typedef struct stu { int num; char name[32]; int age; }STU,*STU_P; //此时的STU不是结构体变量 而是结构体类型 是结构名 //同样*STU_P也是结构名,是指针类型 //struct stu { // int num; // char name[32]; // int age; //}STU2; 这时候STU是 变量名 //切记 结构名 和 变量名 的区别 void test5() { STU luck = {100,"luck",18};//STU luck == struct stu lucy STU_P p = &luck; printf("%d\n%s\n%d", p->num, p->name, p->age); } int main(int argc, char* argv[]) { test5(); return 0; } ``` 不多解释了。 <iframe class="iframe_video" src="//player.bilibili.com/player.html?aid=372528286&bvid=BV1XZ4y1G7No&cid=249272406&page=48" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"> </iframe> * 直接到视频第10分钟 感觉MOOC讲的不详细,到b站找的一个视频还挺好 <div class="tip inlineBlock share"> 哎呀,现在刚好凌晨4点整。。。。 </div> 最后修改:2021 年 03 月 14 日 © 禁止转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏