2013-10-16 3 views
2

포인터로 약간 어려움을 겪고 있으며 함수에서 배열의 전달을 올바르게 선언하는 방법을 설명합니다.(int *)와 (int []) 사이의 서명 함수의 차이점은 무엇입니까?

- (void) testFunction : (int *) array 
{ 
    NSLog(@"%d",array[0]); 
} 

그리고이 :

- (void) testFunction : (int []) array 
{ 
    NSLog(@"%d",array[0]); 
} 

덕분에 많은

은 누군가가 나에게이 차이를 설명 할 수 없습니다.

+1

http://stackoverflow.com/a/1790720/611055이 질문에 대한 답변을 –

답변

1

그러면 아래 물품 대물-C의 배열을 전달하고자하는 경우, 그것은 아래에 주어진 예에서 배열

- (void) testFunction : (NSArray*) yourArray 
{ 
    NSLog(@"%@",[yourArray objectAtIndex:0]); 
} 
+0

예. 감사합니다. 왜이 질문을 설명하기 위해 Objective-C를 선택했는지 모르겠다. 단순히 C를 선택하는 것이 낫다. 내가 알고 싶은 것은 단지 *와 []를 사용하는 것의 차이이다. – Someday

+0

here *는 포인터에서의 값을 의미하고 []는 배열 선언에 사용됩니다. 그래서 나에게 따르면 []를 쓰면 배열을 선언하는 적절한 방법이 될 것이다. –

0

를 전달하는 적절한 방법하면 어레이에 대한 포인터를 전달하는 해당 배열의 첫 번째 멤버를 가리 킵니다. 그래서 포인터 값을 증가시킬 때 포인터가 가리키는 위치가 증가합니다. 배열의 다음 항목을 가리 킵니다.

void testfunction(int *array) 
    { 
    printf("%d",*(array));  //value of array[0] 
    printf("%d",*(array+1));  //value of array[1] 
    printf("%d",*(array+2));  //value of array[2] 


    } 

아래의 예에서 포인터가 유지하는 값은 위치가 아니라 변경됩니다.

void testfunction(int *array) 
    { 
    printf("%d",*(array)); //value of array[0] gets printed 
    printf("%d",*(array)+1); // value of array[0]+1 
    printf("%d",*(array)+2); //value of array[0]+2 


    } 

아래 주어진 예는 제 1 예와 유사합니다. 배열 [0]은 첫 번째 위치에있는 값을 나타냅니다. 인덱스 값은 포인터 배열이 가리켜 야하는 위치를 나타냅니다. 두 번째 print 문은 0 번째 위치의 값을 증가시킵니다. 세 번째 print 문은 포인터가 위치하는 위치를 증가시킵니다 배열 가리키는. 즉, 배열의 다음 값을 사용합니다.

void testfunction(int array[]) 
    { 
    printf("%d",array[0]);  //value of array[0] 
    printf("%d",array[0]+1);  //value of array[0] +1 
    printf("%d",array[0+1]);  // value of array[1].Index value changed 
    } 

C 구문을 사용하여 죄송합니다. 쉽게 이런 식으로 설명 할 수 있습니다. 희망 하시겠습니까!

관련 문제