【发布时间】:2021-10-11 12:34:51
【问题描述】:
我有一个项目需要以下东西。
用 C 和 MIPS 汇编语言编写一个程序:
-
初始化一个3行5列的整数数组:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 -
输入用户的行号和列号
-
main 调用一个子函数来计算所选行和列的内存地址,如下所示:
int arrayAddress( int row, int col, int ncolumns, array); //returns address of array[row][col] -
在适当的地方使用移位而不是乘法
-
打印所选数组元素的地址和值。
问题是我不知道如何执行以下操作-
获取 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("值: %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);
}
}
}
【问题讨论】:
-
请将文本(作业和错误)作为文本复制粘贴到您的问题中。然后在出现错误的行上添加 cmets。
-
编辑以将您的问题描述包含在帖子正文中。
-
您应该明白,
ncolumns声明后面的声明my_array[i][j];无效。您应该更改或删除它。 -
int arrayAddress(int my_array, int i, int j, int ncolumns);{...}应该是函数声明吗? -
我正在编辑,但是,int arrayAddress 是一个函数