user-0 提问: 小白求助一个c中数组做函数参数的问题！！！急急急

回复:
user: user-1
content: int*a[].一般都不这么写，数组传递进去就自动退化成指针 了

user: user-2
content: 引用 18 楼 jay183986697 的回复:[quote=引用 5 楼 q3733353520 的回复:] [quote=引用 3 楼 q3733353520 的回复:] [quote=引用 1 楼 jay183986697 的回复:] 写错了。。改动1出 函数参数是 int * a           .............. 改为int **a[/quote]  对于你函数的用法只能改为 int*a[4][/quote]改了，报错1 unresolved externals 执行 link.exe 时出错.[/quote] http://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&tn=ubuntuu_cb&wd=1%20unresolved%20externals%20%E6%89%A7%E8%A1%8C%20link.exe%20%E6%97%B6%E5%87%BA%E9%94%99&oq=link.exe%20%E6%97%B6%E5%87%BA%E9%94%99&rsv_pq=d2cc07de00101f81&rsv_t=64c3V2gyobYzwaNJjmIm0DTC0TXeUTDq8uqg%2F0y8Q7s2g4rrl8jzCyQ%2FgaqvdgadQA&rsv_enter=0&rsv_sug3=3&rsv_n=2&inputT=1030&rsv_sug4=13416

user: user-3
content: 两位老师....

user: user-4
content: 引用 13 楼 zhao4zhong1 的回复:[quote=引用 9 楼 zhangxiangDavaid 的回复:] [quote=引用 7 楼 zhao4zhong1 的回复:] 思考一下为什么没人将整个互联网内容当作函数参数传来传去呢？ 如何对这种进行描述呢？[/quote] 我的意思是说，对数组这种容量比较大的数据，就别参数传其内容了，最多传其对应的void *，甚至不传，直接使用全局变量共享。[/quote]  数组大吗？数组能有多大？ 如果不建议传递数组的内容，干脆也建议省掉strcpy之类的函数，毕竟复制也挺浪费时间的。

user: user-5
content: 门外汉看不来

user: user-6
content: C++ 数组引用传递，可以整个传递数组，不过很不灵活，数组的元素数只能是固定的 要想传递任意数组，只能定义函数模板 C则只能传递指针，即使定义为传递数组，最终也会当成指针。 多维数组，数组元素也只是固定的 不过，可以通过传递一级指针，操作任何维数的，任何大小的数组。

user: user-0
content: 写错了。。改动1出 函数参数是 int * a           ..............

user: user-7
content: 引用 14 楼 zhangxiangDavaid 的回复:[quote=引用 13 楼 zhao4zhong1 的回复:] [quote=引用 9 楼 zhangxiangDavaid 的回复:] [quote=引用 7 楼 zhao4zhong1 的回复:] 思考一下为什么没人将整个互联网内容当作函数参数传来传去呢？ 如何对这种进行描述呢？[/quote] 我的意思是说，对数组这种容量比较大的数据，就别参数传其内容了，最多传其对应的void *，甚至不传，直接使用全局变量共享。[/quote][/quote] 别急着点赞  C/C++ 根本不可能在函数参数中传递数组 只能传递指向数组的指针 这是在语法层就做的限制 zhao4说的东西没什么卵用

user: user-8
content: 引用 13 楼 zhao4zhong1 的回复:[quote=引用 9 楼 zhangxiangDavaid 的回复:] [quote=引用 7 楼 zhao4zhong1 的回复:] 思考一下为什么没人将整个互联网内容当作函数参数传来传去呢？ 如何对这种进行描述呢？[/quote] 我的意思是说，对数组这种容量比较大的数据，就别参数传其内容了，最多传其对应的void *，甚至不传，直接使用全局变量共享。[/quote]

user: user-9
content: 引用 9 楼 zhangxiangDavaid 的回复:[quote=引用 7 楼 zhao4zhong1 的回复:] 思考一下为什么没人将整个互联网内容当作函数参数传来传去呢？ 如何对这种进行描述呢？[/quote] 我的意思是说，对数组这种容量比较大的数据，就别参数传其内容了，最多传其对应的void *，甚至不传，直接使用全局变量共享。

user: user-7
content: 引用 11 楼 zhangxiangDavaid 的回复:哈哈，为何不能使用“强制类型转换”？ 原因1 字太多 (int*) 需要敲键盘6次  而用*只需要敲键盘1次  就算是[0] 也只是3次  原因2 不方便 你这里传入整个数组  看起来没什么  如果你想传入 76,-4,12,82 用(int*) 写起来自讨苦吃

user: user-8
content: 引用 10 楼 lin5161678 的回复:[quote=引用 8 楼 zhangxiangDavaid 的回复:] 修改如下：  #include <stdio.h> #define M 4 int fun (int *a) {     int i, max; 	max = *a; 	for(i = 1; i < 2*M; i++) 	{ 		if(max < a[i]) 			max = a[i]; 	} 	return max; } int main( ) {   	int arr[2][M] = { 5,8,3,45,76,-4,12,82 }; 	printf("max=%d\n", fun((int*)arr)); 	getchar(); } //max=82 函数调用写错了  别用强制类型转换 用 *arr 或 arr[0][/quote] 哈哈，为何不能使用“强制类型转换”？

user: user-0
content: 引用 5 楼 q3733353520 的回复:[quote=引用 3 楼 q3733353520 的回复:] [quote=引用 1 楼 jay183986697 的回复:] 写错了。。改动1出 函数参数是 int * a           .............. 改为int **a[/quote]  对于你函数的用法只能改为 int*a[4][/quote]改了，报错1 unresolved externals 执行 link.exe 时出错.

user: user-0
content: 引用 5 楼 q3733353520 的回复:[quote=引用 3 楼 q3733353520 的回复:] [quote=引用 1 楼 jay183986697 的回复:] 写错了。。改动1出 函数参数是 int * a           .............. 改为int **a[/quote]  对于你函数的用法只能改为 int*a[4][/quote]改了，报错1 unresolved externals 执行 link.exe 时出错.

user: user-0
content: 引用 2 楼 zsh0317 的回复:改动后函数fun返回的是地址，而改动前函数fun返回的是值。返回max=**a怎么是地址？？

user: user-7
content: 引用 8 楼 zhangxiangDavaid 的回复:修改如下：  #include <stdio.h> #define M 4 int fun (int *a) {     int i, max; 	max = *a; 	for(i = 1; i < 2*M; i++) 	{ 		if(max < a[i]) 			max = a[i]; 	} 	return max; } int main( ) {   	int arr[2][M] = { 5,8,3,45,76,-4,12,82 }; 	printf("max=%d\n", fun((int*)arr)); 	getchar(); } //max=82 函数调用写错了  别用强制类型转换 用 *arr 或 arr[0]

user: user-8
content: 修改如下：  #include <stdio.h> #define M 4 int fun (int *a) {     int i, max; 	max = *a; 	for(i = 1; i < 2*M; i++) 	{ 		if(max < a[i]) 			max = a[i]; 	} 	return max; } int main( ) {   	int arr[2][M] = { 5,8,3,45,76,-4,12,82 }; 	printf("max=%d\n", fun((int*)arr)); 	getchar(); } //max=82

user: user-8
content: 引用 7 楼 zhao4zhong1 的回复:思考一下为什么没人将整个互联网内容当作函数参数传来传去呢？ 如何对这种进行描述呢？

user: user-9
content: 思考一下为什么没人将整个互联网内容当作函数参数传来传去呢？

user: user-10
content: “数组名被改写成一个指针参数”规则并不是递归定义的。数组的数组会被改写成“数组的指针”，而不是“指针的指针”： 实参                                                      所匹配的形参 数组的数组          char c[8][10];                 char (*)[10];          数组指针 改成 int fun(int (*a)[M])