带有整数的数组数组

时间:2011-10-26 12:32:47

标签: objective-c c

您如何将二维数组的整数存储为类变量?

如果你想要一组整数:

班级声明

int * myInts;

实施

int ints[3] = {1,2,3};
myInts = ints;

但是如果你想用int存储一个数组数组呢?

像这样:

 int ints[3][3] = {{1,2,3}, {1,2,3}, {1,2,3}};

我不想限制类声明中数组的大小,所以我想我必须使用指针,但是如何?

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);
}