인수값을 포인터로 받는 함수. 실제로 값을 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;
}