C语言二维数组的函数调用

Python016

C语言二维数组的函数调用,第1张

函数调用不能这么用,第36行。C标准里面返回值是不能直接返回一个数组的,只能返回数组的首地址。输出学生成绩和每科成绩那个函数,你可以定义一个全局变量数组,还有求平均值最好用float 或者double,用int会造成精度流失。帮你调试了一下,大概就这样吧

正如楼下所言

int

**p

,定义的p是一个指向int*型的指针

int

(*p)[10]是一个指向数组的指针

数组长度为10

假如定义成

deal(int

**p),传参数时要加强制类型转换:

deal((int**)a)

并且使用p时不能用下标,p[2][3]是错误的,因为不知道p指向的int*型的长度,无法编译成*(p+2*10+3)

必须自己写成*(p+2*10+3)来调用

假如定义成

deal(int

(*p)[10])就不一样了,编译器就能知道p是一个指向长度为10的数组的指针

那么p[2][3]就能编译成*(p+2*10+3)了

总之,c语言是很灵活的,不同的定义方式配上不同的用法,都是能得到正确的结果的

不知道这么说楼主明白了没?

同样的还有多维数组对多维指针的问题,楼主可以自己类推一下