2011-07-30 2 views
0

포인터 배열에 대해 배열 초기화 중괄호 메서드를 사용하는 방법이 있습니까?{}를 사용하여 C - 시각적으로 효율적인 포인터 배열 초기화

myStruct* array = malloc(4*sizeof(myStruct)); 
array[0] = blah0; 
array[1] = blah1; 
array[2] = blah2; 
... 
array[n] = blahn; 

I가 초기화하고있어 변수가 난 그래서 함수 인수로 전달 된 변수 : 상기 라인보다 보면 훨씬 더 좋은 때문에

myStruct* array = malloc(4*sizeof(myStruct)); 
array = {a,b,c,d}; //like this 

내가 관심이있는 이유는 배열을 초기화하기 위해 효율적으로 반복 할 수 없습니다 ...

답변

2

C99로 할 수 있다고 생각합니다. 이 기능을 복합 리터럴이라고합니다. 배열

struct tag { 
    int x; 
    int y; 
    int z; 
}; 

struct tag *t; 
t = &(struct tag){1, 2, 3}; 

또는 : 당신이 당신의 예에서 표시로이 일정한 크기의 데이터에 대해 정말 경우

int *arr; 
arr = (int []) {1, 2, 3}; 
+0

내가 양립 C99의이 조각은 나를 위해 포함되어 있지 않습니다 생각 컴파일되지 않을 것입니다. 유용한 답장을 보내 주셔서 감사합니다! –

+0

@nick_name'-std = c99'을 시도해보십시오. – cnicutar

+0

네, 운이 없다 ... gcc -o -std = c99 prog prog.c –

0

, 당신은 아마 단순히 그것을 위해 malloc을 사용할 수 없습니다. C는 배열을 가지고, 예

myStruct array[4] = {a,b,c,d}; 
0

:)을 사용하지만, 그들 만 필요한 사용 : 나는 OS X의에 GCC를 사용하고

myStruct array[] = {a,b,c,d};