c - 数组的地址与数组[0]的地址 - C语言

标签 c arrays char malloc memory-address

我的问题是为什么数组的地址与其第一个位置的地址不同?

我正在尝试编写自己的 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 指向的缓冲区中第一个元素的地址,您使用 malloc() 分配了它。

关于c - 数组的地址与数组[0]的地址 - C语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2705329/

相关文章:

PHP数据收集-使用类构造将数字键替换为字符串ident

C++: "my text"是 std::string、*char 还是 c 字符串?

char - scanf 并将 char 保留为整数

c - C语言中如何获取从缓存中读取的字节数

c - 在 C 中同时对两个链表进行入队/出队

c - 获取 Spoj 中超出的时间限制

Javascript 未定义的数组值

c - 将多个文件内容写入单个文件的有效方法

c++ - CStringArray::GetAt(int index) 返回一个常量。为什么?

c++ - 为什么 getline() 跳过输入,即使在 cin.clear() 之后?