Qt编程遇到的typedef

一 主要用法

1 定义一种类型的别名

typedef char* Pchar

那么char *a等价于Pchar a

用typedef定义变量别名的好处在于如果遇到不同平台对数据类型的不同支持,可以只在typedef定义处进行修改,

2 方便结构体的定义

最初结构体要这样定义

struct node{

int x,y;

};

struct node p;

有了typedef后

typedef struct node{

int x,y;

}Node;

Node p;

3 为复杂的变量定义一个别名

typedef (*)(...)// 函数指针

typedef (*)[]  //数组指针

理解一下复杂变量

int(*func)(int *p)

func是个指针,后面跟着(),所以它是个函数指针,形参是个指针,返回值为int类型

int (*func[5])(int *p)

func是个数组,数组的每一个元素都是一个指针,它的每一个元素都是一个函数指针。

理解这些对于我们为复杂变量重命名是有好处的

对于int (*func[5])(int *p)

typedef int *(*Pfun)(int *p)

那么Pfun a[5]就可以替换上面复杂的式子了。

4 tpefdef和#define的区别

typedef char *Pstr1;

#define Pstr2 char *;

Pstr1 s1,s2;

Pstr2 s3,s4;

我们发现s1,s2,s3都是指针,而s4并不是。原因就在于#define只是简单的字符串替换,而typeded则是对变量起了一个新的名字。

案例二

typedef char * pStr;

char string[4] = "abc";

const char *p1 = string;

const pStr p2 = string;

p1++;

p2++;

我们会发现p2++会报错,这是因为const pStr限制了类型为char *的变量为只读类型,因此不能++




你可能感兴趣的:(Qt)