博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c27---typedef
阅读量:7066 次
发布时间:2019-06-28

本文共 4246 字,大约阅读时间需要 14 分钟。

////  main.c//  typedef#include 
/* typedef可以给一个已知的数据类型起别名。 typedef 原有的数据类型 别名; 注意: 1. typedef不仅能给系统原有的数据类型起别名, 也可以给一个自定义的数据类型起别名 2. 利用typedef给数据类型起别名, 并不会生成一个新的数据类型, 仅仅是给原有的类型起了一个别名而已 */int sum(int v1, int v2){ return v1 + v2;}int minus(int v1, int v2){ return v1 - v2;}// 注意:如果是给指向函数的指针起别名,那么指向函数的指针的指针名称就是它的别名// functionPotinter == int(*functionPotinter)(int , int)typedef int(*functionPotinter)(int , int);int main(int argc, const char * argv[]) { // 9如何定义变量 : 数据类型 变量名称; int (*sumP)(int , int ) = sum; sumP = sum; int (*minusP)(int, int) = minus; minusP = minus; //--------------------------------------- functionPotinter sumP = sum; printf("sum = %i\n", sumP(10 , 20)); functionPotinter minusP = minus; printf("minus = %i\n", minusP(20, 10)); return 0;}// ----------------------------给指针起别名----------------------------// String == char *typedef char * String;void test4(){ // char *name = "lnj";,注意: 如果给指针起别名之后, 那么以后利用别名定义变量就不用再加*了 String name = "lnj"; printf("name = %s\n", name);}// ----------------------------给枚举类型起别名----------------------------// 1.先定义枚举类型, 再给枚举类型起别名 enum Gender //枚举类型的作用域:从定义枚举类型那行开始,到作用域结束。 { kGenderMale, kGenderFemale }; typedef enum Gender SEX; //enum Gender sex0; //SEX sex1 = kGenderMale; //SEX sex2 = kGenderFemale; // 2.定义枚举类型的同时给枚举类型起别名 typedef enum Gender { kGenderMale, kGenderFemale } SEX; // 3.定义枚举类型的同时给枚举类型起别名, 并且省略枚举原有类型名称typedef enum{ kGenderMale, kGenderFemale} SEX;void test3(){ // 给枚举起别名 enum Gender sex0; SEX sex1; sex1 = kGenderMale; /* 定义枚举变量有3种方式 1.先定义枚举类型, 再定义枚举变量 2.定义枚举类型的同时定义枚举变量 3.定义枚举类型的同时定义枚举变量, 并且省略枚举类型名称 */ enum Gender2 { kGenderMale2, kGenderFemale2 } sex2; sex2 = kGenderFemale2; enum { kGenderMale3, kGenderFemale3 } sex3; sex3 = kGenderFemale3; }// ----------------------------给结构体类型起别名----------------------------// 1.先定义结构体类型, 再给类型起别名 struct Person //结构体类型的作用域,从结构体类型定义的地方开始直到作用域结束。 { int age; double height; char *name; }; //struct Person sp1; //struct Person sp2; //struct Person sp3; //struct Person sp4; //struct Person sp5; typedef struct Person SPerson; //SPerson sp1; //SPerson sp2; //SPerson sp3; //SPerson sp4;// 2.定义结构体类型的同时, 给结构体类型起别名 typedef struct Person { int age; double height; char *name; } SPerson; //SPerson sp1; //SPerson sp2; //SPerson sp3; //SPerson sp4;// 3.定义结构体类型的同时, 给结构体类型起别名, 并且省略掉原有类型的名称 typedef struct { int age; double height; char *name; } SPerson; //SPerson sp1; //SPerson sp2; //SPerson sp3; //SPerson sp4; void test2(){ // 给构造类型起别名 struct Person { int age; double height; char *name; }; struct Person sp0; SPerson sp; SPerson sp1; SPerson sp2; SPerson sp3; SPerson sp4; /* 结构体变量的定义方式 1.先定义类型再定义变量 2.定义类型的同时定义变量 3.定义类型的同时定义变量, 并且省略类型名称 */}// ----------------------------给基本数据类型(int float doulbe char)起别名----------------------------// Integer == inttypedef int Integer; typedef Integer myInt; // 可以给自定义的起别名void test1(){ int num = 10; printf("num = %i\n", num); Integer age = 30; printf("age = %i\n", age); myInt score = 99; printf("score = %i\n", score);}
////  main.c//  typedef和宏定义的区别#include 
typedef int myInt;#define Integer int //把Integer用int替换,#define是编译的时候替换,typedef char * String;#define MY_STRING char *// 一般情况下如果要给数据类型起一个名称建议用typedef, 不要用define,int main(int argc, const char * argv[]) { int num = 10; printf("num = %i\n", num); myInt age = 30; printf("age = %i\n", age); Integer score = 99; printf("score = %i\n", score); char *name = "lnj"; printf("name = %s\n", name); String name2 = "lmj"; printf("name2 = %s\n", name2); MY_STRING name3 = "lk"; printf("name3 = %s\n", name3); String name1, name2; name1 = "lnj"; name2 = "lmj"; printf("name1 = %s, name2 = %s\n", name1, name2); //char *name3, name4; char *name3; char name4; 直接替换是会出问题的。 MY_STRING name3, name4; name3 = "lk"; name4 = "xb"; printf("name3 = %s, name4 = %s\n", name3, name4); return 0;}

 

转载地址:http://adxll.baihongyu.com/

你可能感兴趣的文章
css3学习 理论之文本
查看>>
Linux 安装python3.7.0
查看>>
<Linux命令行学习 第二节> CentOS - 远程登录管理工具
查看>>
[转]BEHAVOUR TREE2
查看>>
深入理解计算机操作系统(十)
查看>>
XML和Schema命名空间详解
查看>>
npm ERR! Unexpected end of JSON input while parsing near '...inimist":"^1.2.0"}
查看>>
Mybatis Generator逆向工程的使用
查看>>
设计模式(八)_门面模式
查看>>
BFS - 水题
查看>>
软件面试常见题目(转帖)
查看>>
JavaScript事件详解
查看>>
[LeetCode] NO. 387 First Unique Character in a String
查看>>
理解管理信息系统
查看>>
UVA 11991 - Easy Problem from Rujia Liu?
查看>>
CF1101E Polycarp's New Job
查看>>
[转载]我再也不想在任何头文件中看到“using namespace xxx;”了
查看>>
Nginx禁止ip访问或IP网段访问方法
查看>>
IDEA下从零开始搭建SpringBoot工程
查看>>
3d角色模型 制作 全过程 。3d max 。3d role model making process.3d Max
查看>>