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

인수값을 포인터로 받는 함수. 실제로 값을 deep copy하여 새로운 연산을 하는 것이 아니고 편의상 함수로 연산 부분을 따로 만들어 제공한다. 개인적으로는 많이 사용하게 된다.


/*

 넘어온 포인터가 가리키는 값을 서로 바꾸어 준다.

*/ 

void exchage( int * pint1, int * pint2 )

{

int temp;

temp = *pint1;

*pint1 = *pint2;

*pint2 = temp;

}



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

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

//좋은 습관을 위해 함수선언부를 프로그램 초반에 설정하여 컴파일러에게 알린다.

int exchage(<#int * pint1#>, <#int * pint2#>);

int a=-10, b=10, * intPa = &a, * intPb = &b;

NSLog(@"a=%i, b=%i, intPa=%i, intPb=%i", a, b, *intPa, *intPb);

//함수에 포인터를 인수로 넘긴다.

exchage(intPa, intPb);

NSLog(@"a=%i, b=%i, intPa=%i, intPb=%i", a, b, *intPa, *intPb);

//함수에 주소지를 넘긴다. 주소지=포인터

exchage(&a, &b);

NSLog(@"a=%i, b=%i, intPa=%i, intPb=%i", a, b, *intPa, *intPb);

[pool drain];

    return 0;

}


Posted by 정윤수 버터백통

댓글을 달아 주세요