簡體   English   中英

具有整數的數組

[英]Array of arrays with ints

您將如何將整數的二維數組存儲為類變量?

如果您想要一個整數數組,請執行以下操作:

類聲明

int * myInts;

實作

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

但是,如果您要存儲帶有整數的數組怎么辦?

像這樣:

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

我不想限制類聲明中數組的大小,所以我想我必須使用指針,但是如何?

供我參考,這是我的結論:

類聲明

 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}或其他東西輸入多個數字,但這超出了我的要求目前!

如果要動態分配內存,換句話說,在運行時定義數組的大小,則需要將數組聲明為指針,對其進行malloc,然后在運行時向每個索引添加另一個int數組。 您不能真正在類級別進行聲明和動態分配。 如果您使用的是可可/ iPhone SDK,則可以使用NSMutableArray。

您也可以創建自己的類,該類構造二維數組並公開用於推送和彈出int對象的方法,例如[IntegerArray push:x,y,n];

這是Daniel R Hicks指出的使用雙重引用的示例。

我為您編寫了示例:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM