我已经定义像这样的结构体:递增值指向由INT *从结构*
typedef struct {
char* name;
int* numVotes;
} candidate;
分配像这样:
candidate* Person[10];
int i;
for (i = 0; i < 10; i++) {
Person[i] = malloc(sizeof(candidate));
Person[i]->name = malloc(25*sizeof(char));
Person[i]->numVotes = malloc(sizeof(int));
}
试图递增存储在numVotes像这样的值:
int v;
scanf("%d",&v);
while (v != 0) {
switch (v) {
case 1 :
Person[0]->numVotes++;
break;
case 2 :
Person[1]->numVotes++;
break;
case 3 :
Person[2]->numVotes++;
break;
case 4 :
Person[3]->numVotes++;
break;
case 5 :
Person[4]->numVotes++;
break;
case 6 :
Person[5]->numVotes++;
break;
case 7 :
Person[6]->numVotes++;
break;
case 8 :
Person[7]->numVotes++;
break;
case 9 :
Person[8]->numVotes++;
break;
case 10 :
Person[9]->numVotes++;
break;
default :
printf("Spoiled vote\n");
break;
}
scanf("%d",&v);
}
但是,当打印结果我相信这是增加numVotes指向的内存地址。另外,当试图释放内存时,它给了我无效的指针。我如何只增加Person [i] - > numVotes指向的值(不是内存地址)?谢谢。
只使用添加
'INT numVotes',唐当你只需要一个整数时,不要在整数上声明一个指针(并且不要用'malloc') –
@ Jean-FrançoisFabre:你知道他们在说什么。当你学习使用锤子时,一切看起来都像钉子。 – StoryTeller
提示:如果有100个候选而不是10个,你的代码将如何? –