在C

时间:2016-05-31 12:49:53

标签: c

我在C中是全新的。我的任务是在每一行中找到最小值,然后用矩阵执行一些转换。我使用动态2d数组但突然出现了对指针的误解。 Visual Studio向我显示了与函数min

相关的错误列表
Warning 2   warning C4047: ':' : 'int *' differs in levels of indirection from 'int'
Warning 1   warning C4047: '<' : 'int *' differs in levels of indirection from 'int'
Warning 3   warning C4047: '=' : 'int' differs in levels of indirection from 'int *'
Error   1   error C2059: syntax error : 'type'  

我不知道为什么会出现这些错误。

    void transformMatrix(int** arr, int rowCount, int colCount)
    {
        int i,j;
        int minElem;
        for (i=0; i < rowCount; i++)
        {
            minElem = min (arr[i], colCount);
            for (j=0; j < colCount; j++)
            {
                if (i%2 ==0) 
                {
                    arr[i][j] -= minElem;
                }
                else
                {
                    arr[i][j] += minElem;
                }
            }
        }
    }

    int min(int* arr, int elemCount)
    {
        int minEl = arr[0];
        int i;
        for (i=1; i < elemCount; i++)
        {
            if (arr[i]<minEl)
            {
                minEl = arr[i];
            }
        }

        return minEl;
    }

2 个答案:

答案 0 :(得分:1)

功能min标识符已在MSVC stdlib.h中用作宏

#define min(a,b)    (((a) < (b)) ? (a) : (b))

将您的功能重命名为其他内容。

答案 1 :(得分:0)

未发现错误。这是我使用以下结果运行的代码并且工作正常。如果仍然给它,请通知我。所以我可以删除它。

结果

12      13      14                                                                                                                                                                                               
13      14      15                                                                                                                                                                                               
14      15      16                                                                                                                                                                                               
Transforming     

0       1       2                                                                                                                                                                                                
1       2       3                                                                                                                                                                                                
2       3       4 

#include <stdio.h>
#include <stdlib.h> 


    int min(int* arr, int elemCount)
    {
        int minEl = arr[0];
        int i;
        for (i=1; i < elemCount; i++)
        {
            if (arr[i]<minEl)
            {
                minEl = arr[i];
            }
        }

        return minEl;
    }

   void transformMatrix(int** arr, int rowCount, int colCount)
    {
        int i,j;
        int minElem;
        for (i=0; i < rowCount; i++)
        {
            minElem = min (arr[i], colCount);
            for (j=0; j < colCount; j++)
            {
                if (i%2 ==0) 
                {
                    arr[i][j] -= minElem;
                }
                else
                {
                    arr[i][j] += minElem;
                }
            }
        }
    }



int main()
{
   int **aray;
   aray = (int **) malloc(sizeof(int *) * 3);
   aray[0] = (int *) malloc(sizeof(int) * 3);
   aray[1] = (int *) malloc(sizeof(int) * 3);
   aray[2] = (int *) malloc(sizeof(int) * 3);

   for (int i=0; i<3; i++)
   {

    for (int j=0; j<3; j++){
         aray[i][j] = i+j+12;
         printf("%d \t", aray[i][j]);
      }
   printf("\n");
   }

   printf("Transforming \n");
   transformMatrix(aray, 3, 3);

   for (int i=0; i<3; i++)
   {

    for (int j=0; j<3; j++){
      aray[i][j] = i+j;
      printf("%d \t", aray[i][j]);
    }
    printf("\n");
   }

    return 0;
}