zoukankan      html  css  js  c++  java
  • C语言:十九 程序找错 结构体内的指针使用前要确定指向

    程序一:
    struct student
    {
    char *name;
    int score;
    } stu,*pstu;

    int main()
    {
    strcpy(stu.name,"Jimy");
    stu.score = 99;
    return 0;
    }
    问程序有何错误?

    答:错误在于struct中只是定义了指针name,并未分配空间的情况下就strcpy。
    应在main中strcpy之前加上:
    stu.name=(char*)malloc(sizeof(char)*某数)

    程序二:
    int main()
    {
    pstu = (struct student *)malloc(sizeof(struct student));
    strcpy(pstu->name,"Jimy");
    pstu->score=99;
    free(pstu); //记得释放指针,最好加一句pstu= NULL
    return 0;
    }
    解析:
    尽管分配了结构体指针pstu指向的内存空间,但成员name指针扔未被分配空间,应在strcpy前加上:
    pstu->name = (char*)malloc(sizeof(char)*某数)

  • 相关阅读:
    Netty Nio启动全流程
    线性表
    java stream 原理
    SpringBoot 分布式session
    mockito
    RxJava
    HandlerMapping 详解
    SpringMVC 架构
    Spring Cloud 配置服务
    SpringBoot常用配置简介
  • 原文地址:https://www.cnblogs.com/wuqi1003/p/12239665.html
Copyright © 2011-2022 走看看