【黑马程序员】C语言学习笔记之typedef(十五)
来源:互联网 发布:淘宝流量查询 编辑:程序博客网 时间:2024/05/21 09:56
一、概念
给数据类型定义一个新的名字
二、使用
1、基本数据类型
#include <stdio.h>typedef int Integer; // 给int起一个新的名字Integer后,int能正常使用typedef Integer Integer2; // 在别名的基础上,再给Integer起一个新的名字Integer2int main(){ int i = 1; Integer i2 = 2; Integer2 i3 = 3; printf("%d, %d, %d\n", i, i2, i3); // 输出:1, 2, 3 return 0;}2、指针
#include <stdio.h>typedef char * String; // 给char *起一个新的名字Stringint main(){ String name = "hello"; printf("%s\n", name); // 输出:hello return 0;}3、结构体
// 方式一struct PersonType { char *name;};typedef struct PersonType Person;// 方式二typedef struct StudentType { char *name;} Student;// 方式三typedef struct{ char *name;} Cat;int main(){ // 方式一 Person p = {"hello"}; printf("%s\n", p.name); // 输出:hello // 方式二 Student stu = {"world"}; printf("%s\n", stu.name); // 输出:world // 方式三 Cat cat = {"world"}; printf("%s\n", cat.name); // 输出:world return 0;}4、指向结构体的指针
#include <stdio.h>struct Person { char *name;};typedef struct Person * PersonPoint;int main(){ struct Person p = {"hello"}; PersonPoint pp = &p; pp->name = "world"; printf("%s\n", p.name); return 0;}5、枚举
#include <stdio.h>/*// 方式一enum SexEnum { Man, Woman, Unknow};typedef enum SexEnum Sex;// 方式二typedef enum SexEnum { Man, Woman, Unknow} Sex; */ // 方式三typedef enum { Man, Woman, Unknow} Sex;int main(){ Sex sex = Man; printf("%d\n", sex); return 0;}6、指向函数的指针
#include <stdio.h>int sum(int v1, int v2){ return v1 + v2;}typedef int (*IntFunc)(int, int);int main(){ IntFunc func = sum; printf("%d\n", func(3, 4)); return 0;}
三、#define与typedef
先看下面的代码#define String char *typedef char * String2;int main(){ String s1 = "hello"; String2 s2 = "world"; printf("%s, %s\n", s1, s2); return 0;}输出:hello, world
这段代码大家都很容易理解,现在再看下面的代码#include <stdio.h>#define String char *typedef char * String2;int main(){ String s1, s2; String2 s3, s4; return 0;}此时有什么区别呢?让我们来分析一下:
String s1, s2; 因为String 是一个宏定义,编译预处理的时候会直接替换掉,也就相当于char *s1, s2;再明白点就是char *s1; char s2; 这个可以通过sizeof得到证明,只有s1 是char *类型,s2是char 类型。
String2 s3, s4; typedef 是给类型起一个别名,所以就等于 char *s3; char *s4; 所以s3, s4都是char *类型的。
0 0
- 【黑马程序员】C语言学习笔记之typedef(十五)
- 黑马程序员----C 语言学习笔记之枚举类型和typedef关键字
- 黑马程序员IOS基础---C语言学习之typedef
- 【黑马程序员】C语言学习笔记之函数(八)
- 【黑马程序员】C语言学习笔记之数组(九)
- 【黑马程序员】C语言学习笔记之指针(十一)
- 【黑马程序员】C语言学习笔记之字符串(十)
- 【黑马程序员】C语言学习笔记之枚举(十三)
- [黑马程序员][C语言] typedef
- 黑马程序员——13-C语言之typedef
- 黑马程序员--C语言之static和typedef
- 【黑马程序员】C语言学习笔记之错题集
- 【黑马程序员】Objective-C语言学习笔记之小知识点
- 黑马程序员---C语言学习笔记之二
- 黑马程序员---C语言学习笔记之三
- 黑马程序员---C语言学习笔记之四
- 黑马程序员---C语言学习笔记之五
- 黑马程序员---C语言学习笔记之六
- day07 Cookie Session
- 黑马程序员_java基础——面向对象1
- 解决listview中item中点击没有的反应
- 构建根文件系统/dev 目录
- StringBuilder、StringBuffer、String区别
- 【黑马程序员】C语言学习笔记之typedef(十五)
- 根据变量的引用,获取变量名
- ios程序异常退出时,发送邮件告知
- Jquery mobile 提交表单转换到另外一个页面或者留在本页面的方案!
- PrimeFaces4.0关于calendar显示简体中文
- SQLServer和Oracle的常用函数对比
- GET和POST区别
- 一步步学习SPD2010--第九章节--使用可重用工作流和工作流表单(14)--关键点
- 【转载】 Facelets UI 标签参考