c - 初始化整数数组问题
问题描述
我有一个需要以下内容的项目。
用 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("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);
}
}
}
解决方案
我不知道它是否对您有帮助,但您可以使用 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);
}
推荐阅读
- vb.net - 将datagridview数据写入excel表不起作用vb
- r - 尝试在 r 中使用 lm() 和年份
- javascript - 如何在我的 Word 计数器中获得一个列表框?
- oracle - 在 Oracle 中授予角色查询权限不起作用
- arrays - Laravel syntax error in trying to load simple view: unexpected '=>' (T_DOUBLE_ARROW), expecting ']'
- javascript - 将类的静态方法转换为变量打字稿
- gstreamer - 缺少 gstreamer 插件
- python - 什么是'NameError: name 'R' is not defined'错误,我们如何纠正它?
- javascript - 尝试使用 map.filter 写出一系列元素来过滤我的结果时出错
- java - Having an OutputStream write in a C buffer using JNI