2012-09-16 3 views
1

이것은 아주 기본적인 질문 일지 모르지만 저는 C의 초보자입니다. 나는이 건너 온 곳함수에서 구조 타입에 대한 포인터 전달

나는 C로 작성된 펌웨어에 대한 몇 가지 문서를 통해 갈거야 :

typedef struct { 
       int x; 
       int arr[10]; 
       } sx; 

그런 다음 그 유형에 대한 포인터가 전달되는 기능을 가지고있다. 내 자바 경험에서 내가 처음 조각 많은 개체 자바 클래스와 다음 두 번째 조각은 SX의 서브 클래스를 사용하고 같은 슈퍼 클래스에 해당합니다 생각 : 약 2 일이 어디

int f(sx xtype *sp, int i){ 
          return sp -> arr[i]; 
          } 

나는 확실하지 않다. 그러나 나는 확실하지 않다. 누구든지 확인해 주시겠습니까? 내 작은 C의 경험에서 지금까지, 좀 더 이해하기 쉬운 다음과 같이 될 것이다 유형에 대한 포인터를 전달하는 방법을 생각 :

typedef struct xtype { 
       int x; 
       int arr[10]; 
       } sx; 

int f(sx *sp, int i){ 
        return sp -> arr[i]; 
        } 

을하지만 난 그냥이 그림에서 뭔가를 놓치고 생각한다. 미리 감사드립니다.

+1

'xtype'의 정의를 찾을 수 있습니까? – nneonneo

답변

6

이것은 일반적인 구문입니다. 나는 xtype이 어쨌든이

#define xtype const 

같은 것을 볼 수 있었다 어딘가 정의 매크로 변수 sx xtype *sp의 선언이라고 생각 하지spsx 또는 이것의 하위 유형 xtype를 의미라고하지 오랫동안 본 최악의 프리 프로세서 마법입니다.


두 번째 예에서 하위 모델링을 모델링하지 않습니다. 어떤이 :

typedef struct A { 
    /* ... */ 
} B; 

말하는 것은 struct AB과 같은 것입니다. typedef입니다 : 새로운 유형, 즉 더 긴 이름의 짧은 표현 된 버전을 정의합니다.

void func(struct A); 
void func(B); // exactly equivalent 

은 상속과는 아무것도이 없습니다.