简单的c程序。错误:一元'*'的无效类型参数

时间:2014-11-12 01:24:23

标签: c matrix

这是我在这里的第一篇文章,我对C.很新。

我想编写一个能够打印矩阵的程序。它应该看起来像:

----
-o--
ooo-
----

所以我想要开头打印。

我目前的代码是:

    // 4. Exercise
// Learn 2d arrays

#include <stdio.h>

char z;
char s;
char m1_ptr;


void createMatrix()
{
  for(z = 0; z != 4; z++)
  {
    for (s = 0; s != 4; s++)
    {
      printf("%c", *m1_ptr);
    }
    printf("\n");
  }

}



//------------------------------------------------------------------

int main()
{

  char o = o;
  char c = '-';
  // And some variables for the matrix count:
  char matrix_1 [4][4] ={{c,c,c,c},{c,o,c,c},{o,o,o,c},{c,c,c,c}};
  char *m1_ptr = &matrix_1 [z][s];

  createMatrix(matrix_1 [0][0]);



/* for(z = 0; z != 4; z++)
  {
    for (s = 0; s != 4; s++)
    {
      printf("%c", matrix_1 [z][s]);
    }
    printf("\n");
  }
*/
  return 0;

}

如果我将void函数放入main函数中,它会起作用,但由于还有更多的矩阵,我想在额外的函数中做到这一点,以使其更具可读性。

如果我编译,我收到错误消息:

&#34;第17行:错误:一元&#39; *&#39;的无效类型参数(&#39;有int&#39;)&#34; (编辑:第17行是它所说的&#34; printf(&#34; c ......&#34;)

我查看了其他问题,但因为我只理解那些对我来说没有用的超级简单程序。

有谁知道如何解决这个问题? (如果答案解释了原因,那将是很好的,因为我对指针的经验很少)

2 个答案:

答案 0 :(得分:0)

我认为您正在寻找类似的东西:

#include <stdio.h>

#define ROW 4
#define COLUMN 4

void printMatrix(int rowLength, int columnLength, char matrix[rowLength][columnLength]) {

    int rowCount, columnCount;

    for(rowCount = 0; rowCount < rowLength; rowCount++) {

        for(columnCount = 0; columnCount < columnLength; columnCount++)
            printf("%c", matrix[rowCount][columnCount]);

        printf("\n");
    }


}


int main() {

    char o = 'o';
    char c = '-';
    char matrix_1 [ROW][COLUMN] = {
                            {c,c,c,c},
                            {c,o,c,c},
                            {o,o,o,c},
                            {c,c,c,c}
                           };

    printMatrix(ROW, COLUMN, matrix_1);


    return 0;

}

打印出您想要的图案

答案 1 :(得分:0)

#include <stdio.h>


void displayMatrix( char pMatrix[rCount][cCount], int rCount, int cCount )
{

    for(int i = 0; i < rCount; i++ ) // one loop for each row
    {
        for (int j = 0; j < cCount; j++) // one loop for each column
        {
            printf("%c", pMatrix[i][j]);
        }
        printf("\n"); // prep for next row
    }
}



//------------------------------------------------------------------
static const o = 'o';
static const c = '-';

int main()
{
     // And some variables for the matrix count:
     char matrix_1 [][] ={{c,c,c,c},{c,o,c,c},{o,o,o,c},{c,c,c,c}};

     displayMatrix(matrix_1, 
                   sizeof( matrix_1) / sizeof(matrix_1[0]),  // = number of rows
                   sizeof( matrix_1[0]) );                   // = number of columns

     return 0;

}