c++ - 数组基址指针及其地址相同。为什么?

标签 c++ c

考虑以下程序。

#include <stdio.h>

int main()
{
  int a[10]={0};

  printf("%p %p\n", a, &a);
  printf("%d %d\n", *a, *(&a));

  return 0;
}

a 和 &a 是一样的。但是 *a 和 *(&a) 不是。我没有答案。请帮忙。

最佳答案

a[i]*(a + i) 相同。所以第一个元素与数组本身位于相同的地址。

您将在 SO 的另一个问题中找到更详细的解释:How come an array's address is equal to its value in C?

关于c++ - 数组基址指针及其地址相同。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10515382/

相关文章:

c - gcc:错误:Makfile 中无法识别的命令行选项 '-Wl'

c++ - 编译cpp文件时代码不并行,c是并行的

c++ - 前/后函数调用实现

c++ - 数组中的元素移位

c++ - 为什么空字符串文字被视为真?

c - 为什么没有返回 int 的 round() 类型的函数?

c - 为什么 "volatile"只要求数组声明定义一致性?

c - 总是(可移植地)释放并为进程保留内存或返回操作系统

c++ - 在用户定义的函数中将 int 转换为字符

c++ - 关于 C++ 中的 & 运算符的问题