在我一直在阅读的一本 K&R 电子书中,我遇到了以下代码:
我担心的是:
allocbuf + ALLOCSIZE - allocp >= n
代码获取缓冲区开始的地址,并使用指向自身的指针的索引以及上面定义的最大缓冲区长度常量计算剩余分配总数。
现在,我了解到,如果您要定义一个字符指针,例如,然后以算术方式将其加一:
char *ptr = "array";
ptr++;
然后你会得到第二个位置,上面的'r',在内存中。在内存中,实际上以 sizeof(char) 为单位递增。
因此,鉴于数组以指针的名义运行:
allocbuf + 10000
数组中最终分配的插槽是否正确?由于指针是 char 类型的,所以 10000 'slots' 之后实际上是 10,000*sizeof(char) 之后的插槽。
为了在我的脑海中澄清这个概念,给定一个随机内存地址,比如 4210720,4210721 是否代表该地址之后的位、字节或其他一些指标?
那是:
void *ptr = "sherrellbc";
ptr++;
ptr 现在在哪里?它是否位于 's' 和 'h' 之间的某个指针处,因为 void 类型没有提供有关步长的信息(例如,char 指针将按 sizeof(char) 递增)。
本质上,内存使用什么指标存储?位字节,半字节等?