2013-05-31 2 views
-5

우리는 코드 조각 있다고 가정익명 구조체 포인터

int random_function random_variable         
    (                 
    struct struct_name *    
); 

이 유효한 구문 있을까를? 그렇다면 포인터는 나중에 프로그램에서 어떻게 참조합니까?

답변

2

아니요, 샘플 코드가 유효한 구문이 아닙니다. 컴파일 시도는 그것을 보여줄 것입니다.

당신이 묻는 것처럼 보이는 부분에 다시 쓰는 것은 다음 예제입니다. "나중에 프로그램에서 (익명 구조체) 포인터를 어떻게 참조합니까?"

int random_function(int random_variable) { 
    // Supposed Anonymous Struct Pointer, but invalid syntax. 
    struct struct_name *; 
} 

당신이 익명 무엇 혼합되어 나타납니다. 당신의 예제는 당신이 구조체가 이름을 가지고 변수가 anonymous 인 것으로 생각하고 접근 할 수 없게 만들었다.

익명 구조체 포인터의 올바른 예는 다음

int random_function(int random_variable) { 
    struct /* no structure tag here */ { 
    int a; 
    int b; 
    } *variable_name; 
variable_name = malloc(sizeof(variable_name)); 
variable_name->a = 1; 
variable_name->a = 2; 
return variable_name->a; 
} 

당신이 구조가 익명의 구조적인 어떠한 태그를가 없습니다 볼 수있을 것이다. variable_name은 익명 구조체에 대한 포인터가됩니다. 변수는 일반적인 방법으로 액세스됩니다.