指针用于数组和单个数据点之间的区别?

Man*_*ngh 3 c++ arrays pointers

#include <iostream>
using namespace std;
const int MAX = 3;

int main ()
{
   int  var[MAX] = {10, 100, 200};
   int  *ptr;

   // let us have array address in pointer.
  ptr = var;
  for (int i = 0; i < MAX; i++)
   {
      cout << "Address of var[" << i << "] = ";
      cout << ptr << endl;

      cout << "Value of var[" << i << "] = ";
      cout << *ptr << endl;

      // point to the next location
      ptr++;
   }
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

我不明白为什么这个代码应该正常的语法

ptr=&var[0];
Run Code Online (Sandbox Code Playgroud)

代替

ptr=var;
Run Code Online (Sandbox Code Playgroud)

如果var会是这样的

int var=49;
Run Code Online (Sandbox Code Playgroud)

然后我的推理版本成立,早期的程序失败.他们对阵列和单个数据点的任何明确的指针概念?

das*_*ght 5

我不明白为什么这个代码应该正常的语法

ptr=&var[0];
Run Code Online (Sandbox Code Playgroud)

代替

ptr=var;
Run Code Online (Sandbox Code Playgroud)

分配指针的两种方法是等效的.在将数组变量赋给指针C++的表达式中,将数组名称解释为指向数组初始元素的指针,即&var[0].

如果var会是这样的

int var=49;
Run Code Online (Sandbox Code Playgroud)

然后我的推理版本成立,早期的程序失败.

这是因为C++提供了对来自数组的指针的隐式转换,但不是来自标量变量.