동적으로 할당 된 두 구조를 교체하려고합니다. 그러나 string (name) 만 스와핑합니다. 누구나 내 스 니펫에 무엇이 잘못되었는지 말할 수 있습니다.동적 할당 구조 스와핑
typedef struct
{
char name[20];
int num;
char ch;
}student;
void swap(student **a,student **b)
{
student *temp;
temp = *a;
*a = *b;
*b = temp;
}
void main()
{
student *s;
int i;
s = (student *)malloc(10 * sizeof(student));
printf("enter values: ");
for(i=0;i<10;i++)
scanf("%d %c %s",&s[i].num,&s[i].ch,s[i].name);
swap(s+3,s+4);
printf("\n");
for(i=0;i<10;i++)
printf("%d %c %s\n",s[i].num,s[i].ch,s[i].name);
printf("\n");
}
'
각 구조는 독립적으로 동적으로 할당되지 않습니다. 동적으로 할당 된 구조의 단일 시퀀스에있는 두 개의 구조를 교체하려고합니다. 당신은 포인터를 교환함으로써 그렇게하지 않을 것입니다. 이것에는 오직 하나의 변경 가능한 포인터 만있다 :'main()'의's'. – WhozCraig
'swap' 함수의 모든 * 포인터에 대해 한 레벨의 간접 참조를 잃습니다. 두 매개 변수는'student *'이어야하고'temp'는 포인터가 아니어야합니다. 나머지는 동일하게 유지 될 수 있습니다. – WhozCraig