구조체 배열 포인터와 구조체 배열 포인터에 대한 포인터를 함수로 전달한 다음 리턴을 사용하지 않고 수정하려고합니다.함수에 전달 된 포인터를 통해 구조체 배열 수정하기
이 예제 코드는 참으로 무의미합니다. 저의 학습 예제입니다.
기본적으로 array [0] ... array [1] .. array [2] 등등을 만들고 다른 인덱스를 사용하는 동안 ... array_ref [2]와 같은 포인터를 가리키고 싶습니다. ]는 array [0]을 가리키고 array_ref [3]은 array [1]을 가리 킵니다.
아래의 코드는 컴파일되지만 즉시 충돌합니다. 어떤 제안?
typedef struct unit_class_struct {
char *name;
char *last_name;
} person;
int setName(person * array, person ***array_ref) {
array[0].name = strdup("Bob");
array[1].name = strdup("Joseph");
array[0].last_name = strdup("Robert");
array[1].last_name = strdup("Clark");
*array_ref[2] = &array[0];
*array_ref[3] = &array[1];
return 1;
}
int main()
{
person *array;
person **array_r;
array = calloc (5, sizeof(person));
array_r = calloc (5, sizeof(person));
setName(array,&array_r);
printf("First name is %s %s\n", array_r[2]->name, array_r[2]->last_name);
printf("Second name is %s %s\n", array_r[3]->name, array_r[3]->last_name);
return 0;
}
사실 내 프로그램을 한 경우, 내가 사용했을 수도 ... 같은 더 뭔가를해야 할 수도 있습니다 – DigitalRoss