先开始写这个小程序的时候我直接传递的是一个二维指针,然后发现编译跟链接都没有问题,但是运行的时候报了内存错误,经过查询才知道二维数组传参不能直接用二维指针定义
二维数组传递参数一般有三种方法
1.直接传递二维数组如“int a[][10]”(必须标注数组第二维的值)。
2.二维数组第一维用指针代替“int (*a)[3]”。
3.直接传递过去一个一维指针,然后进行强制类型转换“int* a”。
(毕竟是小白,解释不清楚为什么,有什么不对的希望大神指正)
例如:二维数组中的查找,杨氏矩阵
题目:
在一个二维数组中,每行都按照从左到右的递增的顺序排序。每列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个数组和一个数,判断数组中是否包含这个数。
例如:
二维数组
1 2 3
4 5 6
7 8 9
查找数字7.
代码语言如下
int search1_int(int *arr[3], int num) { int high = 3; int wide = 3; for (int i = 0; i < high; i++) { for (int j = 0; j < wide; j++) { if (arr[i][j] == num) return 1; } } return 0; } int main() { int arr[][3] = { {1,2,3}, {4,5,6}, {7,8,9} }; int high=sizeof(arr) / sizeof(arr[0]); int wide=sizeof(arr) / high; printf("%d\n", search1_int(arr, 7)); system("pause"); return 0; }
原文:http://10743407.blog.51cto.com/10733407/1709823