首页 > 解决方案 > 初始化整数数组问题

问题描述

我有一个需要以下内容的项目。

用 C 和 MIPS 汇编语言编写一个程序:

问题是我不知道如何执行以下操作 -

获取 int ncolumns,因为键入 int ncolumns = my_array[][5] 会产生错误

删除第二张图片中显示的以下错误

错误

警告:从不兼容的指针类型“int ( )[5]”分配给“int”[-Wincompatible-pointer-types]

arrayAddress_A = my_array;

警告:格式“%x”需要“unsigned int”类型的参数,但参数 2 的类型为“int *”[-Wformat=]

printf("Memory Address : %x\n", arrayAddress_A);

警告:格式 '%d' 需要类型为 'int' 的参数,但参数 2 的类型为 'int *' [-Wformat=]
printf("Value : %d", arrayAddress_A);

printf("Value : %d", arrayAddress_A);

可能还有其他我不知道的错误。

我的代码:

#include <stdio.h>
 
int main()
{
  // array declaration and initialization
  int my_array[3][5] = {
    {1 ,2 ,3, 4, 5},      //row 1
    {6 ,7 ,8, 9, 10},      //row 2
    {11, 12, 13, 14, 15},      //row 3
  };
  
  {
      int i = 0;
      int j = 0;
      int ncolumns = 5;
      my_array[i][j];
      printf("Enter row : \n");
      scanf("%d",&i);
      printf("Enter column : \n");
      scanf("%d",&j);
    
  int arrayAddress(int my_array, int i, int j, int ncolumns);
  {
      int* arrayAddress_A;
      arrayAddress_A = my_array;
      arrayAddress_A += i * ncolumns + j;
      printf("Memory Address : %x\n",arrayAddress_A);
      printf("Value : %d", arrayAddress_A);
  }
  
  }
}

标签: cmultidimensional-array

解决方案


我不知道它是否对您有帮助,但您可以使用 malloc 函数:

int main ()
{
  int **my_array = malloc(sizeof(int*)*3);
  for(int i=0; i!=3; i++) {
    my_array[i] = malloc(sizeof(int)*5);
  }
}

并且不要忘记在使用您的数组后使用相同的 for 循环“释放()”您的分配!:)

int main()
{
...
  for(int i=0; i!=3; i++) {
    free(my_array[i];
  }
  free(my_array);
}

推荐阅读