background image

行初始化。为了简洁起见,我忽略了初始化部分;因为加入初始化代码的话,

 

下面每个声明都将增加两行代码。

char

 ** p1;

//    pointer to    pointer to    char

const

 

char

 **p2;

//    pointer to    pointer to const char

char

 * 

const

 * p3;

//    pointer to const pointer to    char

const

 

char

 * 

const

 * p4;

//    pointer to const pointer to const char

char

 ** 

const

 p5;

// const pointer to    pointer to    char

const

 

char

 ** 

const

 p6;

// const pointer to    pointer to const char

char

 * 

const

 * 

const

 p7;

// const pointer to const pointer to    char

const

 

char

 * 

const

 * 

const

 p8;

// const pointer to const pointer to const char

注:p1 是指向 char 类型的指针的指针;p2 是指向 const char 类型的指针的
指针;p3 是指向 char 类型的 const 指针;p4 是指向 const char 类型的
const 指针;p5 是指向 char 类型的指针的 const 指针;p6 是指向 const 
char 类型的指针的 const 指针;p7 是指向 char 类型 const 指针的 const 指
针;p8 是指向 const char 类型的 const 指针的 const

 

指针。

typedef

给你一种方式来克服 *

只适合于变量而不适合于类型 的弊端。你可

以如下使用 typedef  

typedef 

char

 * PCHAR;

PCHAR p,q;

这里的 p 和 q 都被声明为指针。(如果不使用 typedef,q 将被声明为一个
char 变量,这跟我们的第一眼感觉不太一致!)下面有一些使用 typedef 的
声明,并且给出了解释:

typedef 

char

 * a;

// a is a pointer to a char 

typedef a b();

// b is a function that returns 
// a pointer to a char

typedef b *c;

// c is a pointer to a function 
// that returns a pointer to a char