Objective C/C언어 기능2010. 7. 18. 13:00

sizeof 자료형의 길이를 바이트 단위로 얻을 있다.

가령 int형의 인스턴스를 sizeof 사용하여 구하면

4라는 값을 구한다. 4바이트를 의미한다.

또는 int ary[] = {1,2,3,4,5,6,7,8};

에서 ary 값을 구하면 32바이트라고 있다.

이는 4바이트씩 8개가 들어가므로 32바이트를 할당받은 것이다.


sizeof 역으로 배열의 길이를 있다.

위에 ary 길이를 알아본다면 아래와 같다,

sizeof(ary)/sizeof(int)

이는 배열에 할당된 바이트에 배열원소의 자료형으로 나누면

간단히 배열의 길이를 있다.

구조체배열에서는 자료형이 여러가지 있으므로

까다로운 작업이 있어야 것이다.

 


int sum_ary( int * n_ary, int index )

{

int i, sum=0;

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

sum += *(n_ary + i);

}

return sum;

}


int main (int argc, const char * argv[]) {

    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

int ary[] = {1,2,3,4,5,6,7,8}; 

int serve_sum;

NSLog(@"sizeof(ary)=%i",sizeof(ary) );

//32 출력 이는 4바이트씩 8개이므로 1바이트씩 32바이트를 출력

//배열 ary 원소구간을 자료형으로 나누면 정확한 배열의 길이를 있다.

NSLog(@"index of array=%d", sizeof(ary)/sizeof(int) );

//8 출력

//길이 8 배열을 4 입력하여 더하므로 36 출력

serve_sum = sum_ary(ary, sizeof(ary)/sizeof(int) );

NSLog(@"sum of array's factors : %d", serve_sum);

[pool drain];

    return 0;

}

Posted by 버터백통