2017-10-03 1 views
-6

을 사용하여 cpp에서 작동을 멈 춥니 다.이 코드를 사용하고 있지만 실행되지 않습니다. Dev C++에서 실행되지 않습니다. 실행되면 폭발합니다.프로그램이 컴파일되고 실행되지만 때로는 typedef 키워드

node n = new Node; 
+2

무엇이 오류입니까? – Tyler

+1

@Ron DevC++는 g ++를 컴파일러로 사용합니다. –

+0

사실, 데이터 필드와 다른 것들을 포함 할 수있는 메모리를 n에 제공해야합니다. – Amit

답변

0

당신은 n 메모리를 할당해야합니다. 데이터를 읽거나 쓸 수있는 메모리 주소를 할당해야합니다.
이 트릭을 수행해야합니다

node n = new Node; 

typedef struct Node *node; 당신을 위해 조금 혼란 스러울 수 있습니다.

Node* n = new Node; 

을 그리고 n 그냥 포인터이며, 따라서 당신이 가리키는 곳을 몇 가지 주소를 할당 할 필요가 훨씬 더 명확하다 타입 정의를 없애 :
당신은 쓸 수 있습니다.

+0

할당 초기화 변경 –

+0

@StoryTeller typedef를 제외하면 'n'은 할당되지 않은 Node 유형의 구조체에 대한 포인터가됩니다. 실행중인 세그먼트 위반이 발생합니다. 작성자는 다음과 같이해야합니다 :'node n = new Node; –

0

분명히 n 변수가 어디서 아는 사람을 가리키는 포인터입니다 :처럼, 뭔가를 사용하기 전에

#include <iostream> 
using namespace std; 
struct Node 
{ 
    struct Node* left; 
    int data; 
    struct Node* right; 
}; 
typedef struct Node *node; 
int main() 
{ 
    node n; 
    n->data = 4; 
    cout << n->data << endl; 
    return 0; 
} 
관련 문제