2d数组错误 - 指向整数而不强制转换

时间:2017-04-26 11:18:25

标签: c arrays

你好stackoverflow社区。这将是我在这里寻求帮助的第一篇文章,我扫描了这个网站的许多页面以及更多的网站试图弄清楚我的代码是什么问题。一点背景 - 这是我在课程介绍中给我的一项任务。我没有它的先进知识和任何其他编程语言,所以对我来说很容易。我需要编写一个程序,它使用我编写的两个函数来查找二维数组中的单元格与右边的邻居之间的总和距离。我还需要计算比所有邻居更大的元素数量。这是我对此的看法:

1)#include <stdio.h>
2)#define N 4
3)int is_strong(int matrix[][N], int row, int column);
4)int Space_rank(int matrix[][N], int row, int column);
5)int My_abs(int);
6)int main()
7){
8)  int matrix[N][N];
9)  printf("Please enter a matrix: \n");
10) for(int i=0; i<N; i++)
11) {
12)   for(int j=0; j<N; j++) scanf("%d", &matrix[i][j]);
13) }
14) int Strong_Amount=0, Total_Space=0;
15) for(int i=0; i<N; i++)
16) {
17)    for(int j=0; j<N; j++)
18)   {
19)        Strong_Amount+=is_strong(matrix[N][N], i, j);
20)        Total_Space+=Space_rank(matrix[N][N], i, j);
21)    }}
22)    printf("Strong elements: %d\n Space rank: %d\n", Strong_Amount,Total_Space);
23)    return 0;
24)}
25)
26)int is_strong (int mat[N][N], int row, int column)
27){
28) int Below, Above, Right, Left;
29) int Subject=mat[row][column];
30) Below=mat[row+1][column];
31) Above=(row-1!=0)*mat[row-1][column];
32) Right=mat[row][column+1];
33) Left=(column-1!=0)*mat[row][column-1];
34) int Answer=(Subject>Above && Subject>Below && Subject>Right && Subject>Left);
35) return Answer;
36)}
37)
38)int Space_rank(int mat[N][N], int row, int column)
39){
40) int Subject=mat[row][column], Right;
41) Right=mat[row][column+1];
42) int Space=My_abs(Subject-Right);
43) return Space;
44)}
45)
46)int My_abs(int v)
47){
48) return v*((v>0)-(v<0));
49)}

我收到错误说&#34;错误:传递&#39; is_strong&#39;的参数1从没有强制转换的整数生成指针&#34;第19行。我认为我的问题是两个函数冲突的类型,但我不能看到我做错了什么。 任何帮助/提示将不胜感激

1 个答案:

答案 0 :(得分:0)

这是将数组传递给函数的方法:

19)        Strong_Amount+=is_strong(matrix, i, j);
20)        Total_Space+=Space_rank(matrix, i, j);