2016-10-15 3 views
-6

나는 이와 비슷한 질문을하고 도움을 받았고 알아 냈습니다. 그러나 이것은 약간 다른 것 같습니다. 헤더 파일의 구조체에서 포인터를 참조하려고하지만 '->'토큰 '오류가 발생하기 전에 "예상 된 식별자 또는') '계속 가져 오는 중입니다. 나는 자리 포인터를 얻기 위해 노력하고있어헤더 파일에서 포인터를 참조하는 데 도움이 필요합니다.

:

typedef struct HugeInteger 
{ 

int *digits; 

int length; 
} HugeInteger; 

사용하여 :

HugeInteger->digits; 

하지만이 오류가 계속. 몇 가지 방법을 시도했지만 동일한 오류가 계속 발생합니다.

당신이 줄 수있는 조언을 미리 주셔서 감사합니다!.

+0

C/C++의 객체 (인스턴스)와 유형은 완전히 다른 것입니다. – krzaq

+0

'HugeInteger'는 타입입니다! 형식을 역 참조 할 수 없습니다. 성취하고자하는 것은 무엇입니까? 당신이 보여주는 것은 전혀 말이되지 않습니다. "당신이 줄 수있는 조언에 대해 미리 감사드립니다!" - 최선의 조언 : 책을 사서 언어를 배웁니다. – Olaf

+0

그리고 언어는 C/C++입니다.** ** 다른 ** 언어 중 어느 것을 사용합니까? C 또는 C++? – Olaf

답변

1

typedef struct HugeInteger 
{ 

    int *digits; 

    int length; 
} HugeInteger; 

에서 typedefHugeInteger하게 struct HugeInteger 별명 그래서 HugeInteger->digits; 역 참조와 가변의 멤버 액세스되지 않는다 (이 struct HugeIntegerHugeInteger 유효 의미 정의. ++ C 전적으로 불필요) 유형을 역 참조하고 유형의 구성원에 액세스하려고 시도하고 있습니다. 변수가 없습니다. typedefHugeInteger없이

은 변수가 될 것입니다, 그래서 당신은

struct HugeInteger 
{ 

    int *digits; 

    int length; 
} HugeInteger; 

, 바로 문제를 해결할 것인가 생각하는 것? 타입과 같은 이름의 변수를 가지기 때문에 발생하는 인간 측 문제 외에도 변수 HugeInteger은 포인터가 아니기 때문에 HugeInteger->digits; 구문이 여전히 유효하지 않습니다.

다른 측으로부터 접근하고 typedef 유지 OP는에서 (다음

HugeInteger * heeeeyuge; 

와 같은 스토리지의 블럭을 보내고 이미 존재 할당 malloc 그것을 가리켜 heeeeyuge에 스토리지를 할당해야 C) 또는 new 저장 블록 (C++)

OP는 포인터를 갖는 것이 원하는 것과 다르다는 것을 알 수 있습니다. 및

HugeInteger.digits 

또는

HugeInteger heeeeyuge; 
heeeeyuge.digits 

충분합니다.

대상이 C의 ++ 인 경우

, 나는
struct HugeInteger 
{ 
    std::vector<int> digits; 
}; 

대신 제안 할 수 있습니다? 자동 메모리 관리는 폭탄입니다.

+0

OP에 설명하는 멋진 답변과 thx. – Drew

관련 문제