A为什么是对的,其他选项错在哪里

img

数组名本质是一个指针,指向的是数组首元素的地址

void fun(float array[],int*ptr)
  • A:array创建了一个float类型的数组(本质是指针),接收主函数传来的数组名,int*ptr是一个int类型的指针
  • B:函数声明里面的数组不需要写大小,它的大小是由主函数传来的数组决定的。你在[ ]里写100、10或不写都没有关系
  • C:array数组是通过地址直接操作主函数里面的数组,并不是复制值
  • D:都是按地址传送

如果对你有帮助,还请点个采纳,万分感谢!

对于c而言,数组参数其实就是把数组的首地址传过去。所以a正确。

首先a选项第二个参数肯定是指针这点母庸质疑,第一个参数是数组,数组其实可以看做是一个指针,指针指向的是第一个元素。b选项参数数组不可以填入大小或长度,所以不存在缺少。c选项数组不是复制而是直接指向使用储存中的值。d选项数组和指针都是按地址传递或是引用传递,非值传递。

本题选A
直接地可以看出,A选项第二个参数ptr是指针,第一个参数是数组,而数组名是首地址,其实究其本质来看,此处array[]也可以看作一种指针变量。✔
B选项参数数组不可以填入大小或长度,所以既然没有这一说法,何来缺少之说。✖
C选项数组不是复制,而是直接指向地址,通过地址来操作地址里的内容。✖
D选项数组和指针为址传递或引用传递,而并非(复制)值传递。✖
以上仅供参考,希望对题主有所帮助!