2010-12-21 9 views
5

I는 다음과 같습니다 배열이 : 나는 그러나 등지도 [1] .name을 통해 이러한 요소에 액세스하기 위해 노력하고있어C 배열 - 조작/액세스

struct table_elt 
{ 
    int id; 
    char name[]; 
} 

struct table_elt map[] = 
{ 
    {123,"elementt1"}, 
    {234,"elt2"}, 
    {345,"elt3"} 
}; 

을, 요소를 올바르게 가져올 수없는 것 같아서 임의의 정크가 발생합니다. 필자는 컴파일러가 요소가 어디에서 달라지기 때문에 어디에 위치하는지 알지 못하기 때문이라고 생각합니다. 유연성과 단순성을 유지하면서이 문제를 해결하는 가장 좋은 방법은 무엇입니까?

답변

8

당신은 아마 원하는 : 그것은 단지이 상황에서 사용되는 경우

보조 노트에
struct table_elt 
{ 
    int id; 
    const char *name; 
} 

struct table_elt map[] = 
{ 
    {123,"elementt1"}, 
    {234,"elt2"}, 
    {345,"elt3"} 
}; 

, table_elt 심지어 이름이 필요하지 않습니다.

1

table_elt 구조 안에 정의되지 않은 길이의 배열을 사용할 수 없습니다. char *로 변경하고 다른 위치에 할당 된 char 배열을 가리 키거나 배열에 적절한 길이를 선택하여 구조체 정의에 포함시킬 수 있습니다.

struct table_elt 
{ 
    int id; 
    char name[15]; 
} 
+0

이 역시 작동합니다! – jetru