响水凹

欢迎来到 Guang-Wen Duan (Dennis Duan) 的个人 Wiki

用户工具

站点工具


computer:c:tips:const_pointer_expr

常量指针表达式

当对全局(external)与静态(static)变量进行初始化时,初始化表达式必须是常量表达式。当变量是指针时,相应的常量指针表达式如何构成呢?

一般有如下几种方法:

1. 空指针。如:

double *p = NULL;

2. 由全局或静态函数转换成的函数指针。如:

extern int f();
static int (*fp)() = f;

3. 由全局或静态数组转换成的指针。如:

char ary[100];
char *p1 = ary;
char *p2 = &ary[2];

4. 全局或静态变量的地址。如:

short s;
short *p = &s;

5. 由整型常量强制转换而成(不可移植)。如:

long *p = (long *)0xFFFFFFFFF0;

6. 字符串常量转换成的指针。如:

char *p = "Hello, world";

7. 由以上3~6种指针与整型常量进行+/-的结果。如:

short *p1 = &s + 3;
short *p2 = &s - 1;
computer/c/tips/const_pointer_expr.txt · 最后更改: 2014/11/01 02:02 由 127.0.0.1