我有一个结构数组,里面有一个数组。
struct member{
int num;
char name[10];
int m[5];
int counter;
}ptr[10];
我试图键入一个条件,比较结构中数组的值和包含结构的数组的值。当我进行二进制比较时,我得到的错误是' int'另一个是结构成员。 struct成员也是一个int(一个带int值的数组),为什么我会遇到这个问题呢?
void checkiffriends(){
for(i=0; i < 10; i++){
for(j=0; j < 5; j++){
if(ptr[i].m[j] == ptr[i+1]){
printf("they are friends!", );
}
}
}
}
答案 0 :(得分:4)
你不是在比较两个整数。你试图将m [j]与它所在的结构进行比较。也许你的意思是ptr [i] .num或.counter
答案 1 :(得分:2)
ptr[i].m[j] == ptr[i]
可能意味着ptr[i].m[j] == i
揭示了算法中的一个缺陷。
我假设m
数组代表&#34的索引;我是......的朋友。&#34;那个ptr[i]
。因此,对于给定的ptr[i]
,您希望列出他的所有朋友,意思是
ptr[j]
,i!=j
,然后查看i
是否在其他人的m
列表中&#34; person& #34; 这个假设是否正确?
这会导致像
这样的东西void checkiffriends(){
int i,j,k;
for(i=0; i < 10; i++){
for(j=0; j < 10; j++){
if (i != j) {
for(k=0; k < 5; k++){
if(ptr[j].m[k] == i){
printf("%d is friend of %d\n", j, i); // indexes
printf("%s is friend of %s\n", ptr[j].name, ptr[i].name); // names
}
}
}
}
}
}
答案 2 :(得分:1)
ptr[i]
是一个结构。 ptr[i].m[j]
是一个整数。
您无法将结构与整数进行比较。
您可以比较两个结构,或两个整数。
struct成员也是一个int(具有int值的数组)
这是错误的。 struct 包含整数数组。所以比较它们没有意义。
答案 3 :(得分:0)
目前还不清楚你想要做什么,但根据你的错误判断,可能就是这样:
void checkiffriends(){
for(i=0; i < 10; i++){
for(j=0; j < 5; j++){
if(ptr[i].m[j] == i){ //Change from ptr[i] to i
printf("they are friends!", );
}
}
}
}
答案 4 :(得分:0)
如果我猜对了,你想在变量m中存储struct member reference。
struct member{
int num;
char name[10];
struct member* m; //correction
int counter;
}ptr[10];
答案 5 :(得分:0)
你在if条件下尝试过(i + 1)而不是ptr [i + 1]。我认为这是避免错误的更好方法。