C语言-16-typedef与预处理

本文详细介绍了C语言中的typedef关键字及其用途,探讨了预处理的概念和在C语言编程中的重要作用,帮助读者更好地理解和应用这些基础知识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

typedef

/*
typedef
1.用一个新的类型名代替原来的类型名
typedef int integer;
typedef float real;
int i,j;float a,b; 与 integer i,j; real a,b;等价
2.命名一个简单的类型名代替复杂的类型表示方法
(1)命名一个新的类型名代表结构体类型
typedef struct
{int month;int day;int year;}Date;
Date birthday;
Date *p
(2)命名一个新的类型名代表数组类型
typedef int num[100];
num a;
(3)命名一个新的类型名代表一个指针类型
typedef char *string;
string p,s[10];
(4)命名一个新的类型名代表指向函数的指针类型
typedef int(*pointer)();
pointer p1,p2;
总结:声明新的类型名的方法:
    1先按定义变量的方法写出定义体(int i;)
    2将变量名换成新类型名(将i换成count)
    3在最前面加typedef
      typedef int count
    4用新类型名去定义变量
Ⅰ.以定义数组类型为例:
int a[100];
int num[100];
typedef int num[100];
num a;
int a[100];
Ⅱ.字符指针类型:
char *p;
char *string;
typedef char *string;
string p;等价char *p;

*/
#include <stdio.h>
typedef int intjie;
int main()
{
	int x = 90;
	intjie y = 100;
	printf("\nx=%d\n\n", x);
	printf("\ny=%d\n\n", y);

	printf("\nx=%d\n\n", sizeof(x));
	printf("\ny=%d\n\n", sizeof(y));

	return 0;
}

预处理

/*
预处理
#开始的预编译指令
Ⅰ宏定义#define
(1)无参宏定义
#define 标识符 字符串
定义常量
#define max_time 1000
(2)带参宏定义
#define 宏名(形参表)字符串
带参宏调用的一般形式:
宏名(实参表);
Ⅱ文件包含#include
引入对应的头文件(.h文件)
#include < >:会在系统路径下查找头文件
#include" ":首先在当前目录下查找头文件,没找到,再去系统路径下查找
二者区别在于头文件的搜索路径不同
Ⅲ条件编译#ifdef
预处理器根据条件编译指令,有条件选择源程序代码中的一部分代码作为输出,送给编译器进行编译
条件编译指令:
#if  条件为真,执行
#elif  前面条件为假,该条件为真,执行
#else  前面条件均为假,执行
#endif 结束相应的条件编译指令
#ifdef 如果宏已定义 执行
#ifndef 如果宏没定义,执行
(1)#if-#else-#endif
#if 条件表达式
    程序段1
#else
    程序段2
#endif
功能是:如果#if表达式为真,则程序段1被选中,否则程序段2被选中
(2)#ifndef-#define-#endif
#ifndef 标识符
#define 标识符 替换列表
    //...
#endif
功能:检测程序中是否已经定义了名字为某标识符的宏,如果没有,则定义宏,选中#define到#endif的程序,已定义不再重复定义该符号
(3)#if--#elif-#else-#endif
#if 条件表达式1
    程序段1
#elif 条件表达式2
    程序段2
#else
    程序段3
#endif
功能:先判断条件1,为真,执行程序1,为假,而条件2为真,执行程序2,其他情况,执行3

4)#ifdef--#endif
#ifdef 标识符
    程序段
#endif
功能:检测到已定义标识符,执行相应程序
*/
 #include <stdio.h>
typedef int intjie;
#define Max 10000

#define s(x,y) x*x+y
int main()
{
	printf("结果=%d\n\n", s(10,5));
	int x = 90;
	intjie y = 100;
	printf("\nx=%d\n\n", x);
	printf("\ny=%d\n\n", y);

	printf("\nx=%d\n\n", sizeof(x));
	printf("\ny=%d\n\n", sizeof(y));

	printf("x=%d\n\n", Max);

	return 0;
}

#include <stdio.h>
#define N 200

int main()
{
#ifndef N
	printf("\nNNNNN\n\n");
#else
	printf("\nMMMMM\n\n");
#endif
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值