#define和typedef的简单区别及使用

简介: /* ============================================================================ Name : TestDefine.
/*
 ============================================================================
 Name        : TestDefine.c
 Author      : lf
 Version     :
 Copyright   : Your copyright notice
 Description : #define和typedef的简单区别及使用

 1 两者执行时间的差异
   #define是宏定义,发生在预处理阶段,即编译之前.
        它只进行简单而机械的替换,而不进行任何检查.
   typedef在编译阶段有效.由于是在编译阶段,因此typedef有类型检查的功能.
 2 两者作用的差异
   typedef用于给一个已经存在的类型一个别名.
   #define是预处理指令,在编译预处理时进行简单的替换,不作正确性检查.例如:
   #define PI 3.14
        在预处理时s=PI*r*r会替换为s=3.14*r*r
 3 写法上的区别.
   typedef语句以;结尾,但是#define语句末尾处无;
        其实预处理的语句(#)的结尾都没有;号,比如#include <stdio.h>
 ============================================================================
 */

#include <stdio.h>
#include <stdlib.h>
//利用#define定义变量NUMBER,其值为9527
#define NUMBER 9527

void printFun(int i);

//利用typedef将int定义成INTEGER
typedef int INTEGER;


//利用typedef定义数组.
//定义的intArray数组存放整数且大小为10
//它的通用定义方式为:
//typedef <元素类型关键字><数组类型名>[<常量表达式>];
typedef int intArray[10];


//利用typedef定义结构体
typedef struct {
	char name;
	int age;
}student;


//利用typedef定义函数指针
typedef void (*printFunP)(int);

int main(void) {
	testTypedef();
	testDefine();
	return EXIT_SUCCESS;
}

void testTypedef(){
	INTEGER i=5;
	printf("INTEGER i=%d\n",i);
	printf("=============\n");

	intArray array={1,2,3,4,5,6,7,8,9,0};
	int j;
	for (j = 0; j < 10; j++) {
		printf("j=%d\n",j);
	}
	printf("=============\n");

	student s;
	s.name='L';
	s.age=25;
	printf("name=%c,age=%d\n", s.name, s.age);
	printf("=============\n");


	//利用之前定义的函数指针
	printFunP printFunPointer;
	printFunPointer=printFun;
    (*printFunPointer)(27);
    //(printFunPointer)(27);//一样
}


void printFun(int i){
	printf("i=%d\n",i);
	printf("=============\n");
}

void testDefine(){
	printf("number=%d\n",NUMBER);
}

相关文章
|
27天前
|
C语言
typedef 和 # define 用法区别
typedef 和 # define 用法区别
17 0
|
4月前
typedef用法
typedef用法
22 0
|
4月前
|
C语言 C++
[C++&C] Struct 和Typedef Struct的区别
[C++&C] Struct 和Typedef Struct的区别
58 0
|
6月前
|
编译器 C++
typedef vs #define
typedef vs #define。
14 0
|
6月前
|
编译器
#define 与 const 区别
#define 与 const 区别。
34 1
|
10月前
|
存储 编译器 C语言
typedef的使用
typedef的使用
74 0
|
11月前
const与#define的区别与联系
const与#define的区别与联系
66 0
|
C语言 C++ 编译器
C/C++语法知识:typedef struct 用法详解
第一篇:typedef struct与struct的区别 1. 基本解释 typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。
5823 0
#define a int[10]与 typedef int a[10]用法
// #define a int[10] #include #include #define a int[10] int main() { int *p=(int *)malloc(sizeof(a)); p[0]=1; printf("%d\n",p[0]);...
1699 0
#define与typedef区别
1) #define是预处理指令,在编译预处理时进行简单的替换,不作正确性检查,不关含义是否正确照样带入,只有在编译已被展开的源程序时才会发现可能的错误并报错。例如: #define PI 3.1415926 程序中的:area=PI*r*r 会替换为3.1415926*r*r 如果你把#define语句中的数字9 写成字母g 预处理也照样带入。
946 0