您如何将二维数组的整数存储为类变量?
如果你想要一组整数:
班级声明
int * myInts;
实施
int ints[3] = {1,2,3};
myInts = ints;
但是如果你想用int存储一个数组数组呢?
像这样:
int ints[3][3] = {{1,2,3}, {1,2,3}, {1,2,3}};
我不想限制类声明中数组的大小,所以我想我必须使用指针,但是如何?
答案 0 :(得分:1)
为了将来参考,这是我的结论:
班级声明
int ** ints;
<强>实施强>
int rows = 2;
int cols = 5;
ints = (int**)malloc(rows*sizeof(int*));
ints[0] = (int*)malloc(cols*sizeof(int));
ints[0][0] = 123;
ints[0][1] = 456;
ints[0][2] = 789;
// etc
这是我自己对评论中提供的链接的解释,我的C技能非常低,所以考虑到这一点;)也许有更好的方法一次使用{123,456,789}或其他东西放入多个数字,但这是超出我现在的要求!
答案 1 :(得分:0)
如果要动态分配内存,换句话说,在运行时定义数组的大小,则需要将数组声明为指针,malloc,然后在运行时向每个索引添加另一个int数组。你无法真正在类级别声明和动态分配。如果您使用的是cocoa / iphone sdk,则可以使用NSMutableArray。
您还可以创建自己的类来构造二维数组,并公开推送和弹出int对象的方法,如[IntegerArray push:x,y,n];
这是使用double reference的例子,正如Daniel R Hicks指出的那样。
答案 2 :(得分:0)
我为你写了样本:
int N = 10, M = 15;
NSMutableArray *ints = [NSMutableArray arrayWithCapacity:N]; // array[N][M]
for (int i=0; i<N; i++)
{
NSMutableArray *arr = [NSMutableArray arrayWithCapacity:M];
for (int j=0; j<M; j++)
{
[arr addObject:[NSNumber numberWithInt:(i+1)*(j+1)]];
}
[ints addObject:arr];
}
// print
for (int i=0; i<[ints count]; i++)
{
NSString *line = @"";
NSMutableArray *arr = [ints objectAtIndex:i];
for (int j=0; j<[arr count]; j++)
line = [NSString stringWithFormat:@"%@ %@", line, [arr objectAtIndex:j]];
NSLog(@"%@", line);
}