输出结果是6,为啥没有return也能执行

img

int sum(int a[])与int sum(int* a)是一样的。 传入参入为一个指针。 你的调用传入的指针为a+2。 根据这个函数的定义,他执行的就是a[2] = a[1] + a[3]. 因为是指针传参,直接操作原地址的内容。

你的sum函数定义在gcc下是编译不通过的。int函数必须要返回值。虽然你的程序逻辑中,返回值没有任何用途。