通过K&R我也看看下面的代码:
#define ALLOCSIZE 1000
static char allocbuf[MAXLINE];
static char *allocp = allocbuf
char *alloc(int n){
if (allocbuf+ALLOCSIZE-allocp>=n){
allocp+=n;
return allocp-n;
}
else { ... }
Run Code Online (Sandbox Code Playgroud)
我担心我的问题非常简单,但我无法理解"if"行.allocbuf有什么价值?它是一个char数组,对吧?我回头看了书中的数组内容,但没有用.allocp最初指向数组的第0个元素,对吧?
allocbuf是一个类型为 的数组char [],但在许多情况下,标识符本身会衰减为类型为 的指针char *,保存数组的起始地址。请注意,这并不意味着它allocbuf是一个指针,它仍然是一个数组。
因此,语句的条件if执行一些指针运算。