我的问题是,为什么数组的地址与其第一个位置的地址不同?
我试着写我自己的malloc,但一开始我只是分配了一块内存和地址。我的代码大致如下:

#define BUFF_SIZE 1024
static char *mallocbuff;

int main(){
     mallocbuff = malloc(BUFF_SIZE);
     printf("The address of mallocbuff is %d\n", &mallocbuff);
     printf("The address of mallocbuff[0] is %d\n", &mallocbuff[0]);
}

&每次我运行mallocbuff都是同一个地址。&mallocbuff[0]每次都是一些随机地址。我原以为地址会匹配。有人能解释为什么不是这样吗?

最佳答案

&mallocbuff是命名变量的地址。mallocbuff是用&mallocbuff[0]分配的由mallocbuff指向的缓冲区中第一个元素的地址。

07-24 09:51