Object-C学习(五):结构体(struct)、typedef、以及与#define宏定义的区别
来源:互联网 发布:手机定位模拟软件 编辑:程序博客网 时间:2024/04/29 11:32
结构体:
结构体是一种数据类型的组合和数据抽象。
基本格式如下:
struct complex_struct{
double x, y;
};
这样就定义了一个由两个double类型组成的结构体,complex_struct是标示符,这种标示符成为Tag,我们可以把它的整体看做一个类型名,如果你想声明一个这种类型的变量可以像声明其他数据类型的变量一样,如下:
struct complex_struct{
double x, y;
}z1, z2;
像这样声明了z1,z2两个变量,如果想要给他们赋值可以直接z1.x = 10; z1.y = 20;
结构体{}内可以定义多个变量,他们之间用“,”号隔开。
结构体变量也可以在初始化的时候直接定义:struct complex_struct z1 = { 10,20 };
{}语法不能用于结构体的赋值,下面是一种错误的用法:
struct complex_struct z1;
z1 = { 10, 20 };
typedef关键字:
typedef是C语言的关键字,作用是为一种数据类型定义一个新的名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。
使用它有两个目的,一个是给变量一个容易记且意义明确的新名字,另一个是简化一些比较复杂的类型声明。
下面就简化一下上面定义的结构体:
typedef struct complex_struct{ double x,y;}myStruct;myStruct a = {10.0,20.0};NSLog(@"%f",a.x);
这样在我们想定义一个struct类型的变量时,就不用struct complex_struct z1 = { 10,20 }这么麻烦的写了。
struct complex_struct{
double x, y;
}
就等价与mystruct。
想更加深入的了解struct 请去这里
#define宏定义预处理指令
#define是一种预处理指令,比如你可以通过这样 #define PI 3.1415926 预定义一个π,在你的程序里可以当用到π值的时候直接使用PI代替3.1415926。它只是一个简单的替换,并且除了可以替换一个常量以外,也可以替换一些条件判断、函数等。如:#define Loop_10 for (int i=0; i<10; i++)。而且可以用 #ifdef ,#ifndef等来进行逻辑判断,还可以使用#undef来取消定义。
而typedef不是简单的文本替换,看下面这个从百度百科拿来的例子,很好的对它们做了比较:
typedef char* pStr1;
- Object-C学习(五):结构体(struct)、typedef、以及与#define宏定义的区别
- 结构体定义struct 与 typedef struct 的区别
- define和typedef的区别?以及typedef struct 与struct的区别
- typedef struct和struct定义结构体的区别
- typedef struct和struct定义结构体的区别
- typedef struct与struct定义结构体
- 结构标签(struct tag)与类型定义(typedef)的区别
- C语言 枚举(enum)、宏定义(#define)、结构体(struct)的一种联合应用
- typedef定义的struct类型与struct定义的结构体变量在使用上的区别
- c语言结构体 和 typedef struct与struct的区别
- 结构体定义 typedef struct 学习
- typedef和#define的定义与区别
- enum和typedef 与#define宏定义的区别
- struct和typedef struct、enum与typedef enum、链表与结构体的区别
- struct和typedef struct、enum与typedef enum、链表与结构体的区别(转载)
- struct和typedef struct、enum与typedef enum、链表与结构体的区别
- 结构体,共用体,typedef与define的区别,链表
- 结构体:struct 和 typedef struct应该以及结构体的构造函数 区别
- Object-C学习(二):关键字self、super、static的简单理解
- Object-C学习(三):#import与@class的区别
- 【转】关键字static的作用
- Object-C学习(四):使用动态绑定(id类型)
- 快速排序算法
- Object-C学习(五):结构体(struct)、typedef、以及与#define宏定义的区别
- hdu 1240 BFS
- Object-C学习(六):委托模式
- Object-C学习(七):预处理程序
- Android Application 介绍
- Head First C这本书怎么才能读懂
- Create CLR(Command Language Runtime) procedure and Deployment
- 10 常用类
- 关于数据库视图,tomcat端口被占用