2013-01-07 2 views
0
#include<stdio.h> 

typedef struct student{ 
int id; 
int mark; 
}stud; 

typedef struct stud *s1; 

void main(){ 
s1 = NULL; 
printf("hi"); 
} 

NULL로 구조체 포인터를 초기화하는 방법을 도와주십시오. 컴파일하는 동안 다음 오류가 발생합니다.NULL에 typedef 구조체 포인터를 초기화

graph.c: In function ‘main’: 
graph.c:11:04: error: expected identifier or ‘(’ before ‘=’ token 

답변

0

당신이 정의하는 의미 변수 s1

stud *s1; 

라이브 데모 : http://ideone.com/9ThCDi

당신이했던 오류가 발생했습니다 이유는 당신이 "에 대한 유형으로 s1를 선언 한 것입니다 구조체 스터드에 대한 포인터 ". 이는 다음 두 가지 이유로 잘못되었습니다.

  1. s1은 유형이 아닙니다. 당신은 그것이 객체가되기를 원했습니다.
  2. 귀하의 구조는 struct student입니다. 그러나 stud이라는 실제 유형을 정의했습니다.
0

struct student * s1; 대신

타입 정의 구조체 스터드 * (S1)의

;

내가 아는 한 typedef는 사용자 정의 데이터 유형을 정의 할 때만 사용됩니다.