august 发表于 2007-4-9 15:18:46

一个结构的问题

一个收入学生信息再输出的程序,我想问的是把char name改为 char *name 的话那后面怎么修改法呢? 请各位大虾指教...
#include<stdio.h>
struct student
{
    int num;
    char name;
    float score_c;
    float score_j;
};
struct student student1;
void a(int *n,char *d,float *e,float *f);
void ab();
void main()
{
    int i=5;
    for(i=0;i<5;i++)
    ab();
}
   
void ab()   
{   
    printf("请输入学号:");
    scanf("%d",&student1.num);
    fflush(stdin);
    printf("\n请输入姓名:");
    gets(student1.name);
    fflush(stdin);
    printf("\n请输入C的成绩:");
    scanf("%f",&student1.score_c);
    printf("\n请输入J的成绩:");
    scanf("%f",&student1.score_j);
    a(&student1.num,student1.name,&student1.score_c,&student1.score_j);
}

void a(int *n,char *d,float *e,float *f)
{
   
    printf("\n该生的信息\n");
    printf("\n学号:%d",*n);
    printf("\n姓名:%s",d);
    printf("\n成绩C:%f",*e);
    printf("\n成绩J:%f",*f);
    printf("\n平均成绩为:%f\n",(*e+*f)/2);
}

Saiholmes 发表于 2007-4-9 16:24:38

malloc申请空间

august 发表于 2007-4-9 16:28:44

引用第1楼Saiholmes于2007-04-09 16:24发表的:
malloc申请空间
不懂

lw 发表于 2007-4-9 20:32:53

就是说本来char 是固定申请20字节的内存
现在是char* name = malloc( bytesyouwant );

记得需要自己释放内存 free( name ) 否则内存就一直占用了,直到进程结束- -

Miliardo 发表于 2007-4-10 11:17:02

malloc和calloc之类是在stdlib.h里面定义的……

嗯……忘记释放内存而直接重新对存在目标的指针malloc/new,而导致原来指针丢失而原内存未被且无法被释放,这种问题叫做内存泄漏……是C/C++比较容易发生的错误。
页: [1]
查看完整版本: 一个结构的问题