再争执下去题外话会越来越多。
/////////////////////////////////////////////////////////////////////////////////////////
穆杨兄你那两个定义确实有问题,这已经不是二维数组和二级指针的问题了。拿第一个定义做例子分析。
int ((long * v1[7][8])(int))[5]; //这个定义怎么讲都是非法的。
//这定义并不是定义几级指针问题,而是想要定义函数却定义错了。
//从表面看是定义long * v1[7][8]个参数为整型的函数,这样根本就是错了。
//因为数组必须每个元素长度相同,而不同函数长度不一样,所以错了;
//后面也有一个'[5]':这样又错了。前面错了先不管,前面这函数的返回值是
一个整型数组,而函数只能返回标量值,不可以返回数组,所以后面也错了。
/////////////////////////////////////////////////////////////////////////////////////////
穆杨兄你那两个定义确实有问题,这已经不是二维数组和二级指针的问题了。拿第一个定义做例子分析。
int ((long * v1[7][8])(int))[5]; //这个定义怎么讲都是非法的。
//这定义并不是定义几级指针问题,而是想要定义函数却定义错了。
//从表面看是定义long * v1[7][8]个参数为整型的函数,这样根本就是错了。
//因为数组必须每个元素长度相同,而不同函数长度不一样,所以错了;
//后面也有一个'[5]':这样又错了。前面错了先不管,前面这函数的返回值是
一个整型数组,而函数只能返回标量值,不可以返回数组,所以后面也错了。
我的原则很简单:不做不喜欢的事!