为什么有时仅使用Ampersand运算符在C 中分配指针

Why is an ampersand operator used only sometimes to assign a pointer in C++?

本文关键字:分配 指针 运算符 Ampersand 为什么      更新时间:2023-10-16

有人可以解释为什么将数组的内存地址分配给指针与将'正常'变量分配给指针不一样?(int a; int* p =&a;(

我知道一个事实,即阵列(& arr(前面的andand指向其内存地址,那么为什么不起作用地将其分配给指针?

float* p;
float arr[5];
p = arr; // why is this correct 
p = &arr; // and this isn't

工作草案的报价,编程标准语言C

4.2数组转换转换

" n t的数组"或"未知绑定的数组 t"可以转换为"指针t"类型的序言。这 结果是指向数组的第一个元素的指针。

因此, arr与示例中的 &arr[0]相同,这是指向数组的第一个元素的指针。

请注意,您也可以这样做:

float (*p)[5]; // pointer to array
float arr[5];
p=&arr;

并使用:

访问您的元素
   (*p)[0];
   (*p)[1];
   (*p)[2];
   ...