gpt4 book ai didi

C数组/指针问题

转载 作者:太空狗 更新时间:2023-10-29 15:06:24 25 4
gpt4 key购买 nike

通过 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 { ... }

恐怕我的问题很简单,但我无法理解“如果”这一行。 allocbuf 取什么值?它是一个字符数组,对吧?回头看了看书上那些数组的东西,也没用。 allocp 最初指向数组的第零个元素,对吗?

最佳答案

allocbufchar [] 类型的数组,但在许多情况下,标识符本身会衰减为 char * 类型的指针,保存数组的起始地址。请注意,这并不意味着 allocbuf 是一个指针,它仍然是一个数组。

因此,if 语句的条件执行一些指针运算。

关于C数组/指针问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6597943/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com