我的问题是,为什么数组的地址与其第一个位置的地址不同?
我试着写我自己的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
指向的缓冲区中第一个元素的地址。