2015-01-07 2 views
0

프로그램은 벡터의 크기를 계산 한 다음 결과를 출력합니다. 이 모든 작업을 관리 할 수 ​​있지만 구조체를 실제로 선언하는 데 문제가 있습니다.C에서 배열로 작동하는 구조체 선언하기

프로그램은 사용자가 저장하고 싶은 벡터의 수를 묻습니다.

그래서 내 구조체 배열 유엔이 할당 내가 malloc에 ​​()/free()를 여기

하지만 나중에 다시 올 것이다 I가되는

struct vector *array 
{ 
    double x; 
    double y; 
    double z; 
} 

XYZ을하려고하고 무엇을 왼쪽 점의 벡터, 나는 배열의 각 요소가 x, y, z를 포함 할 것이라고 가정하고 있지만 컴파일 할 때 "," "asm"오류가 발생하기 전에는 작동하지 않습니다. {그래서 여기에 =을 넣으십시오.

struct vector *array= 
    { 
     double x; 
     double y; 
     double z; 
    } 

그러면 이중 표현식을 찾기 전에 표현식을줍니다.

내가 뭘 잘못하고 있니?

다시 알 수없는 경우. I 사용자가 그 번호 나 XYZ 포함 어레이의 각 요소를 가정하고 구조체 배열 메모리 할당의 malloc 내에서 사용되는 사용되는 벡터의 번호를 입력하도록 시도하고

새로운 구조체이므로 도움을 많이 받으실 수 있습니다.

답변

2
struct vector 
{ 
    double x; 
    double y; 
    double z; 
}; 

struct vector *array; 

이제 배열 구조체 벡터에 포인터이고 당신은 malloc()를 사용하여 필요한 메모리를 할당하여 그것의 인스턴스를 생성하고 각 인스턴스에 대한 구조체 필드에 값을 할당 할 수 있습니다. 만약 내가 잘못

array = malloc(sizeof(struct vector) *n); /* n = size inputted by user */ 
for(i=0;i<n;i++) 
{ 
    array[i].x = <someval>; 
    array[i].y = <someval>; 
    array[i].z = <someval>; 
} 
+0

이 날 수정처럼

, 지금 우리는 벡터를 구조체에 대한 포인터를 가지고있다. 그래서 그 배열의 각 요소는 x, y, z를 포함하고 있습니다. 만약 내가이 배열 [1] .x 나 array [1] .y와 같은 것을 할 필요가 있다면, – Superman

+0

은 당신이 업데이트 한 것과 같은 질문을했습니다. 당신의 하하가 간결하고시기 적절한 응답을 많이 해 주셔서 감사합니다. – Superman

+0

@Superman이 질문에 대한 답변이 있습니까? – Gopi