2011-05-03 5 views
-1

나는 한 연구는,하지만 난 문제인수 패스

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    int r1=40,r2=5; 
    swap(r1,r2); 

    NSLog(@" temp is %d",r1); 
} 

void swap(int r1, int r2) 
{ 
    NSLog(@" m i 1st"); 
    int temp; 
    temp=r1; 
    r1=r2; 
    r2=temp; 

    NSLog(@" temp is %d",r1); 
} 
가 오전 않았다 내가 swap의 충돌 유형을 얻고있다

; 이 일을하는 올바른 방법입니까? 감사!

+0

내가 = 죄송합니다, 그 작동 벌금, 방금 경고를이 방법은 c99에 유효하지 않습니다 – prajakta

+0

나는 충돌 유형의 스왑을 받고,이 corr입니다 요법의 방법 >>? – prajakta

답변

2

r1r2을 교체하려면 포인터를 전달하거나 C++ 참조를 사용해야합니다. C++ 참조를 사용하는 경우 Objective-C++로 다이빙해야합니다.이 경우 .m 대신 파일 이름이 .mm 인 것을 의미합니다.

void swap_with_pointers(int *r1, int *r2) 
{ 
    int temp; 
    temp = *r1; 
    *r1 = *r2; 
    *r2 = temp; 
} 

void swap_with_references(int &r1, int &r2) 
{ 
    int temp; 
    temp = r1; 
    r1 = r2 
    r2 = temp; 
} 

그리고, 다음처럼 구현 예 중 하나를 사용

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    int x = 3; 
    int y = 4; 
    swap_with_pointer(&x, &y); // swap_with_references(x,y); 
    printf("x = %d, y = %d", x, y); 
    return 0; 
} 

출력 어느 방법 :

X = 4, Y 3

+0

고마워요,하지만 obj-c C99에서 스왑의 암시 적 선언이 유효하지 않으므로 경고를받습니다. – prajakta

+0

스왑을 사용하기 전에 선언해야합니다. 파일 상단에'void swap (int r1, int r2);'줄을 추가하십시오. –

+0

예, 선언 후 괜찮아요 :) – prajakta