为什么将数组的地址分配给指针"my_pointer =&my_array"是编译错误?

use*_*564 13 c++ arrays

int my_array[5] = {0};
int *my_pointer = 0;

my_pointer = &my_array // compiler error
my_pointer = my_array // ok
Run Code Online (Sandbox Code Playgroud)

如果my_array是数组的地址那么什么&my_array给了我?

Mar*_*som 26

my_array是5个整数数组的名称.编译器很乐意将其转换为指向单个整数的指针.

&my_array是一个指向5个整数数组的指针.编译器不会将整数数组视为单个整数,因此它拒绝进行转换.