[英]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.