2009-12-02 3 views
3

필자는 프로그램에서 정수형 2 차원 배열을 필요로하지만, 그것을 ivar로 선언하고 @ property/@ synthesize를 사용하려고해도 컴파일러 불만이나 다른 것을 얻을 수 있습니다.C 타입 어레이를 아이어로 사용하는 방법은 무엇입니까?

가 나는 바르로

int spotLocations[10] [10] 

을 선언합니다.

그다지 효과적이지만, @ property/@ synthesize 프로세스는 결코 소집되지 않습니다.

+0

당신이 말하는 프로그래밍 언어를 지정해야한다고 생각합니다. – unwind

+0

분명히 Objective-C – Rudedog

+0

Objective-C에 익숙한 사람에게만 Objective-C가 분명히 나와 있습니다. –

답변

4

수행 할 수 없습니다. C에서 변수 variabless는 절대로 배열을 반환 할 함수를 선언 할 수 없다는 것을 의미합니다. 배열 변수에 함수 결과를 할당 할 수 없으므로 (lvalue가 될 수 없기 때문입니다).

속성은 형식을 반환하는 함수를 선언하는 간단한 방법 일뿐입니다. 함수는 결코 배열을 반환 할 수 없기 때문에 결코 배열 인 프로퍼티를 선언 할 수 없습니다. 에 액세스 물론

@property matrix spotLocations; 

...

typedef struct { 
    int value[10][10]; 
} matrix; 

: 당신이 절대적으로 같은 행렬을 주변에 이동해야하는 경우

, 당신은 lvalues ​​할 수있는 구조체에 포장 할 수 위치가 조금 복잡하면 사용할 수 있습니다.

spotLocations.value[x][y] 
2

인스턴스 변수를 다음과 같이 선언하십시오. 포인터를 만든 다음 init 메서드에서 동적으로 배열을 만듭니다. @property 선언에 assign 매개 변수를 사용하십시오.

할당 :

spotLocations = malloc(100 * sizeof(int)); 

액세스 수행하여 열과 행 :

int aValue = spotLocations[x + y * 10]; 

은 무료로 기억() 당신이 그것으로 완료 포인터.

관련 문제