2011-08-23 5 views
0

기본 포인터 질문이 있습니다. 내가 가진이 같은 일부 코드 : 내가 아무것도 다음 코드에서 잘못되면 알려 주시기 바랍니다 :C에서 참조 구조체 변수 전달 사용

struct abc { 
    int a; 
    int b; 
}; 

void func2(int*); // defined elsewhere 

void func1 (struct abc *p1) 
{ 
    struct abc var1 = *p1; // ======> Can I do this ? 

    func2(&var1.b); 
    func2(&p1->b);  // =========> Which of these 2 is right ? 
} 
+0

'func2()'의 서명은 무엇입니까? –

+0

func2 (int *)가 서명입니다. – Vin

답변

10

struct abc var1 = *p1; ======> 나는이 작업을 수행 할 수 있습니까?

예, 로컬 변수 var1에 p1이 가리키는 구조체를 복사합니다.

func2(&var1.b); func2(&p1->b); =========>는 이러한 2 중 어느 맞아?

func2()이 매개 변수로 int*을 허용하면 둘 다. func2p1->b 또는 var1.b으로 수정할지 여부에 따라 다릅니다.