#include<stdio.h>
#include<stdlib.h>
struct person
{
char name;
int age;
char sex;
struct person *next;
};
[color=#FF0000]struct person *per;
per=(struct person*)malloc(20*sizeof(struct person));
#include<stdlib.h>
struct person
{
char name;
int age;
char sex;
struct person *next;
};
[color=#FF0000]struct person *per;
per=(struct person*)malloc(20*sizeof(struct person));
void main()
{
struct person person1={“人物”,18,”男”};
printf(“%s\t%ld\t%s\t”,person1.name,person1.age,person1.sex);
}
各位程序前辈们本人是一个大二学生,最近学数据结构,然后本人又重新复习起C语言,数据结构中的线性表,老师给的实验项目中有关线性表的一些东西本人都不太懂,没办法本人就去看C语言的书,然后本人看到了动态分配内存,但是本人看书上的代码寥寥几行,本人又比较蠢,从百度知道上搜的动态分配内存实例看不懂完全,没办法本人只能上论坛了
本人写上面一个内存分配实例 但是通过不了,前辈们能否有时间给本人改改,顺遍点醒下动态分配是怎么回事,谢谢大家了,本人真的是走投无路了。
解决方案:15分
#include<stdio.h>
#include<stdlib.h>
struct person
{
char name[10];
int age;
char sex[3];
struct person *next;
};
//struct person *per;
//per=(struct person*)malloc(20*sizeof(struct person));
void main()
{
struct person *per;
per=(struct person*)malloc(20*sizeof(struct person));
struct person person1={“人物”,18,”男”};
printf(“%s\t%ld\t%s\t”,person1.name,person1.age,person1.sex);
}
你的结构体创建要注意一些问题,汉字是一个字、俩字节。动态创建有好处就是你需要多少结点就建立多少结点,给你省很多空间。
#include<stdlib.h>
struct person
{
char name[10];
int age;
char sex[3];
struct person *next;
};
//struct person *per;
//per=(struct person*)malloc(20*sizeof(struct person));
void main()
{
struct person *per;
per=(struct person*)malloc(20*sizeof(struct person));
struct person person1={“人物”,18,”男”};
printf(“%s\t%ld\t%s\t”,person1.name,person1.age,person1.sex);
}
你的结构体创建要注意一些问题,汉字是一个字、俩字节。动态创建有好处就是你需要多少结点就建立多少结点,给你省很多空间。
解决方案:15分
#include<stdio.h> #include<stdlib.h> struct person { char name [10]; int age; char sex [10]; struct person *next; }; struct person *per = (struct person*) malloc (20 * sizeof (struct person) ); int main (int argc, char** argv) { struct person person1 = {"person",18,"sex"}; printf("%s\t%ld\t%s\t",person1.name,person1.age,person1.sex); return 0; }
首先结构体中定义的 name 只是一个字节,是存不了两个汉字的长度的,sex 也一样道理。
再者,全局变量可以在声明时初始化,但不能像你写的那样重新用一个赋值语句,假如要这样写,就在函数上下文中写,即是在main ()中写。
解决方案:10分
3楼定义全局变量不能调用函数。
要么将struct person *per = (struct person*) malloc (20 * sizeof (struct person) );这句置于main函数中。
或定义全局变量struct person *per;空间分配在main函数内per= (struct person*) malloc (20 * sizeof (struct person) )。
要么将struct person *per = (struct person*) malloc (20 * sizeof (struct person) );这句置于main函数中。
或定义全局变量struct person *per;空间分配在main函数内per= (struct person*) malloc (20 * sizeof (struct person) )。