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)*某数)

  • 相关阅读:
    07 JavaWeb
    06 XML编程(CRUD)
    05 XML
    04 DOM一窥
    03 Javascript初识
    02 CSS/javaScript
    01 HTML基础
    09_IO流
    08_集合概述
    07_基本数据类型和包装类
  • 原文地址:https://www.cnblogs.com/wuqi1003/p/12239665.html
Copyright © 2011-2022 走看看