行初始化。为了简洁起见,我忽略了初始化部分;因为加入初始化代码的话,
下面每个声明都将增加两行代码。
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