구조체에 대한 포인터라는 구조체의 필드에 구조체를 할당하고 싶습니다. 여기 아래에서 제가 말하는 것을 보여 드리겠습니다.
typedef struct {
char *name;
} geometry;
typedef struct sceneGR_tag {
geometry *g;
struct sceneGR_tag *next;
} sceneGR;
typedef struct {
geometry *g;
int nshapes;
sceneGR *root;
} scene;
보시다시피, sceneGR
에는 기하학 * g가 있습니다 (기하 구조의 배열). 지오메트리를 사용하여 구조체 '장면'을 이미 초기화했다고 가정하고 지오메트리를 구조체 'sceneGR'로 복사하고 싶습니다.
내에서 어떻게 할 수 for
있습니까? :
scene *scn; //already initialized with nshapes=6, and so with 6 geometries until g[5];
for(k = 0; k < scn->nshapes; k++) {
//what can i do here?
}
루프가 필요한 이유는 무엇입니까? 당신은 단지해야합니다 :
scn->root->geometry = scn->geometry;
하지만 내가 원하는 것이 아니라면 알려주세요.
편집하다
당신은 각각의 기하 값 복사 할 scn->g
각을 sceneGR->g
. 그러나 당신이 geometry** g
당신의 struct scene
. 그러나 코드로 할 수 있습니다.
scene *scn;
sceneGR *s_list = scn->root;
for(k = 0; k < scn->nshapes; k++) {
s_list->g = &(scn->g[k]);
s_list = s_list->next;
}
그러나 함께 geometry** g
당신의 struct scene
, 당신은 할 수 있습니다 :
scene *scn;
sceneGR *s_list = scn->root;
for(k = 0; k < scn->nshapes; k++) {
s_list->g = scn->g[k];
s_list = s_list->next;
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다