实参该写*p还是p呢

问题遇到的现象和发生背景

题目是以指向数组的指针为参数,调用函数func,主函数定义一维数组

问题相关代码,请勿粘贴截图

int func(int a[])
调用函数 b=func(*p);

运行结果及报错内容

cannot convert parameter 1 from 'int' to 'int []'

我的解答思路和尝试过的方法

用p可以运行,但我看有一题写的是*p,这两个有什么区别吗

我想要达到的结果

主函数定义一维数组,对端int func(int a[])的形参是数组,这种情况调用应该写b=func(p),直接传数组过去;若对端形参是指针int func(int *a),则应该写b=func(&p),取数组地址传过去。

p指向的是一个数组的首地址,因为数组的地址是连续的,所以通过传递p,可以在func里面获取到数组
*p是数组首元素的值,传递的仅仅是一个值,不能获取数组数据

望采纳,谢谢

其实区别不是特别大,当你的形参为数组的时候,实参是可以用指针的,但是如果形参不是,那就不能用指针作为实参,指针和数组都是系统自动分配内存空间,两个极为相似,所以指针和数组一般连用。