主要内容:#define和typedef区别、结构体细节
#include <stdio.h>
#define INT_D int*
#define CHAR_D char
int main()
{
/*#define 与 typedef区别*/
//例子1
typedef int* INT_T;
typedef char CHAR_T;
INT_T a,b; // a、b都为int型指针
INT_D c,d; // c为int型指针、d为int整型,此处体现两者区别
unsigned CHAR_D e; // #define的类型定义可以类型扩展
// unsigned CHAR_T f; // 这句是错误的,typedef重定义类型不能加类型扩展
//例子2
typedef char * pStr;
char string[4] = "abc";
const char *p1 = string;
const pStr p2 = string;
p1++;
p2++; // typedef重定义类型不能加类型扩展 ,const pStr p2的含义是:限定数据类型为char *的变量p2为只读,因此p2++错误。
/* 结构体细节 */
//测试1
struct foo{
int foo;
} foo; // 最后面的foo是结构体foo声明的一个变量
// foo test; // 直接这么定义一个结构体是错误的
foo.foo= 1; // 结构体名可以和内部变量名一样
printf("foo = %d\n",foo.foo);
//测试2
typedef struct fun{
int fun;
}fun;
fun fn; // 这时可以定义
/*
小结:
1、不要为了方便起见对结构体使用typedef,这样唯一好处就是你不用写struct,但是这个关键字
可以向你提示一些信息,不应该省掉
2、typedef用在数组、结构、指针以及函数的组合类型;可移植类型,当你需要一种至少20比特的类型时,可以进行
typedef操作,这样代码移植到不通平台,要选择正确类型如short、int、long时,只需要对typedef进行修改,而不用对
每个类型修改
*/
return 0;
}
输出: