嘿嘿哈哈啦啦啦 2022-08-15 17:01 采纳率: 100%
浏览 21
已结题

请问在打问号的地方为什么是上面的而不是下面的,为什么对ptr数组更改嗯

#include<stdio.h>

#define NUM 5
struct MyRecord{
int val;
bool flag;

};
void main(void)
{
MyRecord rec[NUM];
MyRecord *ptr[NUM];
int i,j,k;
for(i=0;i<NUM;i++)
{
scanf("%d",&rec[i].val);

rec[i].flag=false;
}

for(i=0;i<NUM;i++){
for(j=0;j<NUM;j++)
{
if(rec[j].flag)
continue;
ptr[i]=&rec[j];
break;
}
for(k=0;k<NUM;k++)
{
if(rec[k].flag)continue;
if((*ptr[i]).val>rec[k].val)
ptr[i]=&rec[k];
}
(*ptr[i]).flag=true;?
//rec[i].flag=true;?
}
for(i=0;i<NUM;i++)
{
printf("%d",(*ptr[i]).val);

}
printf("\n");
}

  • 写回答

1条回答 默认 最新

  • 於黾 2022-08-15 17:04
    关注

    其实就是rec[k]和rec[i]的区别
    ptr[i]=&rec[k];这不是把ptr[i]指向了rec[k]吗
    那你前面判断的是rec[k],你去改rec[i]不改乱套了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 8月23日
  • 已采纳回答 8月15日
  • 创建了问题 8月15日