2015-09-13 84 views
-2

我有功能如何計算行列C數組?

- (void)sortColor:(int [3][3])colors 

有什麼方法來計算在Objective-C的行和列? 我知道這不是一個nsarray.I想知道有沒有簡單的方法來計算行和列?

我得到了山坳,但排

COL =的sizeof(顏色[0])/的sizeof(*顏色[0])

誰能幫助?

+2

這不是'NSArray'。 – nhgrif

+0

謝謝你哥們.. – iceChao

回答

1

假設你考慮的第一陣列數列,例如:int arr[# rows][# columns] = ...

這是你在找什麼:

int rows = sizeof(arr)/sizeof(*arr); 
int columns = sizeof(arr[0])/sizeof(*arr[0]); 

不,這將簡單地返回其創建的大小C數組,而不是實際存在的值的數量。如果這是你的目標,你確實需要使用與上面概述的結構不同的結構。

+0

這是你的問題的正確答案,但你可能不會問你的想法是什麼......閱讀維基百科上的[不完整類型](https://en.m.wikipedia.org/wiki/Sizeof#Incomplete_types)關於'sizeof'的頁面 - 本質上是如果你傳遞一個指向未知維度的C數組的指針,你*無法確定它們。 – CRD

+0

此答案*僅適用於數組聲明點。如果你將數組傳遞給一個函數,這不再起作用。真正的答案是,「你已經知道尺寸,因爲你在聲明中定義了尺寸。」在這種情況下,行數是3,列數是3,因爲它們被定義爲如此。 –

+0

@CRD謝謝你! :) – iceChao

-1

通過使用count方法,您可以獲得NSArray中項目的數量。請注意,int arr[3][3]而不是一個NSArray,它是一個標準的C數組。你通常不能得到標準C數組的數量,你必須自己跟蹤它。

+0

非常感謝。 – iceChao

0

那麼,沒有什麼像在Objective-C或Swift中的二維數組。這是你如何模擬行爲:

NSMutableArray *row1 = [NSMutableArray arrayWithObjects:@"1", @"2", nil]; 
NSMutableArray *row2 = [NSMutableArray arrayWithObjects:@"3", @"4", nil]; 
NSMutableArray *row3 = [NSMutableArray arrayWithObjects:@"5", @"6", nil]; 

NSArray *multiArray = @[row1, row2, row3]; 

NSInteger rowCount = multiArray.count; 
NSInteger columnCount = row1.count; // believing each row object have same number of objects