```c
#include
#include
struct STU{
int *score;
}stu;
int main(){
stu.score=(int *)malloc(10*sizeof(int));
for(int i=0;i<3;i++){
scanf("%d",stu.score+i);
}
for(int i=0;i<3;i++){
printf("%d",stu.score);
stu.score++;
}
return 0;
}
//输入1 2 3,输出1 2 3
```
有啥问题啊?
第二个for循环不好,16行stu.score++大问题。你这么搞以后,这个结构就基本废了,你把申请的内存块的首地址弄丢了,而且printf语句也不对
printf("%d",stu.score[i]);
printf("%d",stu.score);这里错了
输入的时候你知道要+i
输出也应该+i呀,你这一直都输出同一个地址
首先malloc申请的空间最好释放掉,这是一个习惯问题,剩下的鹦鹉老哥说的很对,stu.score++大问题,不过如果你想沿用你当前这种写法的话可以在打印stu.score的地方加个‘*’,printf("%d",*stu.score);
for(int i=0;i<3;i++){
printf("%d ",*(stu.score+i));
// stu.score++;
}
free(stu.score);
供参考:
#include <stdio.h>
#include <stdlib.h>
struct STU {
int* score;
}stu;
int main() {
stu.score = (int*)malloc(10 * sizeof(int));
for (int i = 0; i < 3; i++) {
scanf("%d", stu.score + i);
}
for (int* p = stu.score; p < stu.score + 3; p++) {
//for (int i = 0; i < 3; i++) {
printf("%d ", *p);
//printf("%d", *stu.score);
//stu.score++;
}
return 0;
}
//输入1 2 3,输出1 2 3