在我的代码中,我尝试增加特定数组索引的值。问题是当我用++
将其递增时,由于某种原因(而不是1),其值将递增4。我认为我访问该索引值的方式是错误的。
void updateData(char** usernames, int** userWins, int** userDraws, int** userDefeats,
int totalUsers,char username1[],char username2[],int whoIsWinner,char againstPC){
int i;
printf("Username: %s.\tWins: %d.\tDraws: %d.\tDefeats: %d.\n",
usernames[0],userWins[0],userDraws[0],userDefeats[0]);
userWins[0]++;
userDraws[0]++;
userDefeats[0]++;
printf("Username: %s.\tWins: %d.\tDraws: %d.\tDefeats: %d.\n",
usernames[0],userWins[0],userDraws[0],userDefeats[0]);
}
userWins,userDraws,userDefeats是动态int数组。我使用**是因为我希望它们通过引用传递。请忽略该函数的最后5个参数。
编辑:添加了声明和函数调用
int* userWins;
int* userDraws;
int* userDefeats;
userWins=(int*) malloc(sizeof(int)*totalUsers);
userDraws=(int*) malloc(sizeof(int)*totalUsers);
userDefeats=(int*) malloc(sizeof(int)*totalUsers);
updateData(usernames,userWins,userDraws,userDefeats,totalUsers,tempUsername1,
tempUsername2,tempWinner,againstPC);
答案 0 :(得分:1)
您的函数带有一个双指针,这意味着要获取该值,您必须将其取消引用两次。但是,userWins[0]
一次取消引用userWins
,您将获得一个指针。然后++
运算符将值增加指针大小,在您的系统上为4。如果userWins
是一个数组,只需将其作为int* userWins
传递即可。