Objective C/C언어 기능2010. 7. 18. 12:27

이번부터 다루는 내용은 프레임워크에서 지원하는 객체가 아닌 C에서 제공하는 내용이다. 오브젝티브C는 C/C++언어(기반)도 지원하므로 좀 더 깊이 있는 코딩을 위해서는 알고 가는것도 좋다.


C하부 객체를 이용하여 배열을 선언한다. 추후 프레임워크에서 제공하는 NSArray객체는 

훨씬 다루기 쉽고 편하게 설계된 객체이다

C에서 제공하는 배열은 객체에 [] 사용하여 배열의 길이를 정하고

해당 객체 타입만을 담을 있다.

 

한번 정해진 배열의 길이는 런타임 확장이 불가능 하다.

만약 확장한다면 가끔 정확히 값이 들어가지만 대부분 값이 잘못 들어가게 된다.

따라서 런타임 초기화 하고 싶으면 [] 값을 다시 초기화 하면 된다.

 

배열의 길이를 정하지 않고 {} 사용하여 초기화 하면 자동으로 배열의 길이가 정해진다.

//길이 10개의 int 담을 있는 배열을 선언

int intAry[10];

int i=0;

for( i=0; i<10; i++ ){

intAry[ i ] = i*2;

}

for( i=0; i<10; i++ ){

NSLog(@"intAry[%i] = %i" , i, intAry[i] );

}

//길이 5개인 char 배열생성 초기화(설정)

char letters[5] = {'a','b','c','d','e'};

for( i=0; i<10; i++ ){

NSLog(@"letters[%i] = %c" , i, letters[i] );

}

//////배열 크기 확장

letters[10];

for( i=5; i<10; i++ ){

letters[ i ] = letters[ i-5 ];

}

for( i=0; i<10; i++ ){

NSLog(@"letters[%i] = %c" , i, letters[i] );

}

//배열길이 무작위 초기화

float floatAry[] = { [7] = 5.7 , [4] = 10.3, [12] = 55.2 };

for( i=0; i<13; i++ ){

NSLog(@"floatAry[%i] = %f" , i, floatAry[i] );

}

//{} 다라 설정된 배열의 길이

char word[] = {'H','e','l', 'l', 'o', '!'};

NSLog(@"word : %s",word);

for( i=0; i<6; i++ ){

NSLog(@"word[%i] = %c" , i, word[i] );

}

//null값인 \0 대입하여 문자열을 만듬

char word2[] = {'H','e','l', 'l', 'o', '!', '\0'};

NSLog(@"word2 : %s",word2);

/////2차원 배열 설정 : 배열의 길이와 초기화

int int2DepthAry[3][5] = {

{1,3,5,7,9},

{12,56,89,34,67},

{4,13,5,32,24}

};

int j = 0;

for(i=0; i<3; i++){

for(j=0; j<5; j++){

NSLog(@"int2DepthAry[%i][%i] : %i", i , j , int2DepthAry[i][j]);

}

}

/////2차원 배열 불규칙 설정 : 선언되지 않은 곳은 0으로 초기화, 문자 배열은 ''으로 초기화

int int2DepthAryB[3][6] = {

{1,3,5,7},

{12,56,89,34,6,38},

{[0]=5, [4]=32, [5]=24}

};

for(i=0; i<3; i++){

for(j=0; j<6; j++){

NSLog(@"int2DepthAryB[%i][%i] : %i", i , j , int2DepthAryB[i][j]);

}

}

Posted by 버터백통