#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);
}

相关文章
|
4月前
|
存储
【C深剖】typedef与define区别
【C深剖】typedef与define区别
|
2月前
|
编译器 C语言
C语言:typedef 和 define 有什么区别
在C语言中,`typedef`和`#define`都是用来创建标识符以简化复杂数据类型或常量的使用,但它们之间存在本质的区别。`typedef`用于定义新的数据类型别名,它保留了数据类型的特性但不分配内存。而`#define`是预处理器指令,用于定义宏替换,既可用于定义常量,也可用于简单的文本替换,但在编译前进行,过度使用可能导致代码可读性下降。正确选择使用`typedef`或`#define`可以提高代码质量和可维护性。
|
7月前
|
编译器 C++
struct 和 typedef struct 区别和用法总结
struct 和 typedef struct 区别和用法总结
136 0
|
7月前
|
C语言
typedef 和 # define 用法区别
typedef 和 # define 用法区别
66 0
|
7月前
typedef用法
typedef用法
52 0
|
7月前
|
C语言 C++
[C++&C] Struct 和Typedef Struct的区别
[C++&C] Struct 和Typedef Struct的区别
159 0
|
编译器 C++
typedef vs #define
typedef vs #define。
34 0
|
C语言 C++ 编译器
C/C++语法知识:typedef struct 用法详解
第一篇:typedef struct与struct的区别 1. 基本解释 typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。
6381 0
|
编译器 C++
struct和typedef struct
struct和typedef struct
116 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]);...
1757 0