白沐沐vccc 2022-09-09 10:51 采纳率: 96.7%
浏览 36
已结题

c语言结构体指针赋值



```c
#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 i=0;i<3;i++){
        printf("%d",stu.score);
        stu.score++;
    }
    return 0;
}

//输入1 2 3,输出1 2 3 

```

  • 写回答

5条回答 默认 最新

  • 快乐鹦鹉 2022-09-09 10:54
    关注

    有啥问题啊?
    第二个for循环不好,16行stu.score++大问题。你这么搞以后,这个结构就基本废了,你把申请的内存块的首地址弄丢了,而且printf语句也不对
    printf("%d",stu.score[i]);

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
  • 於黾 2022-09-09 10:56
    关注

    printf("%d",stu.score);这里错了
    输入的时候你知道要+i
    输出也应该+i呀,你这一直都输出同一个地址

    评论
  • Ubabi_? 2022-09-09 11:06
    关注

    首先malloc申请的空间最好释放掉,这是一个习惯问题,剩下的鹦鹉老哥说的很对,stu.score++大问题,不过如果你想沿用你当前这种写法的话可以在打印stu.score的地方加个‘*’,printf("%d",*stu.score);

    评论 编辑记录
  • diedream 2022-09-09 11:13
    关注

    for(int i=0;i<3;i++){
    printf("%d ",*(stu.score+i));
    // stu.score++;
    }
    free(stu.score);

    评论
  • qzjhjxj 2022-09-09 11:47
    关注

    供参考:

    #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 
    
    
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 9月17日
  • 已采纳回答 9月9日
  • 创建了问题 9月9日

悬赏问题

  • ¥15 电脑锁屏时vba运行SAP,excel数据不能复制到SAP
  • ¥50 74LS系列 74LS00 74LS04设计一个RS485电路(关键词-差分)
  • ¥30 各位help写一下代码
  • ¥15 在运行SDEdit模型下载不了
  • ¥15 求51控制l298n驱动的小车中超声波避障怎么写
  • ¥15 电脑连上WIFI却用不了
  • ¥30 MATLAB在RLC电路的固有响应和阶跃响应GUI仿真报告
  • ¥15 hyper-v出现的问题
  • ¥15 有能用的可加酬金,求可以批量下载懒人听书的软件,能登录自己帐号的。
  • ¥100 高博一起做RGB-D SLAM(5)VO无法出visualisation问题