在《c程序设计语言》一书中看到一句话一直不太明白,说外部变量和静态变量的初始化表达式必须是常量表达式,可是在之后的章节中又看到这样的代码
#define ALLOCSIZE 10000
static char allocbuf[ALLOCSIZE];
static char *allcop = allocbuf;
求教这里面的allcop指针变量的初始化表达式为什么可以用?是因为数组名其实不是一个真正的变量吗?那数组名到底算什么呢?就是一个代表数组第一个元素的地址常量吗?再将数组改为一个指针变量以后也确实编译失败了,请问数组名到底是个什么存在呢?常量?
数组名其实可以理解成 char const *,
也就是 不能改变指向的指针,也就是 指针常量。。
全局类的指针,都要声明成const比较好