2016-11-12 1 views
0

두 개의 포인터 인수를받는 함수가 하나 있습니다. 이 말을하자.포인터를 사용하여 함수 내에서 함수 호출 - C

void add(u16 *x, u16 *y) 

그리고 세 개의 포인터 인수를 허용하는 또 다른 함수가있다. 사실 내 특정 기준이 충족되면

void fact(u16 *a, u16 *b, u16 *c){ 
    if(*c > 500){ 
     add(*a,*b); // Is this correct? 
    } 
} 

, 나는 기능 추가로 인수 a와 b를 전달하려면,하지만 값이 아닌 참조를 전달하려는. 내가 정확히 어떻게 이럴 수 있니?. 함수를 호출 할 때 a, b, c, x 및 y는 모두 "& x"를 사용하여 "main"에서 전달됩니다.

모든 값 수정이 main으로 돌아갈 수 있도록 모든 것이 참조로 전달되기를 바랍니다.

대단히 감사합니다!

답변

1

add (* a, * b); // 이 올바른지?

아니요. 올바르지 않습니다.

프로토 타입이 void add(u16 *x, u16 *y) 인 경우 호출하는 함수는 일치하는 유형의 매개 변수를 호출해야합니다. fact(), ab에서 이미 포인터,과 같이 올바른 코드가 표시되어야합니다

void fact(u16 *a, u16 *b, u16 *c){ 
    if(*c > 500){ 
     add(a,b); // this is correct 
    } 
} 
1

아니,이 올바르지 않습니다. 개인적으로 변수 이름이 아닌 유형 옆에 *을 쓰면 더 쉽게 이해할 수 있습니다.

함수 add은 두 개의 인수를 취하며 둘 다 에 대한 포인터입니다. 즉, u16*입니다. fact에는 세 개의 변수 (모두 u16*)가 있습니다. 유형은 이미 일치하는, 그래서 당신은 그것을 호출 할 필요가 : 그런 다음 참조하여 실제 정수 값을 전달하는 것과 같습니다 값으로 포인터을 전달하는

add(a, b); 

. 필요한 경우 포인터에 포인터를 전달할 수 있지만 값으로 포인터를 전달하는 것보다 덜 일반적입니다.

관련 문제