Code Bye

大二菜鸟求帮助

#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));

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);
}
你的结构体创建要注意一些问题,汉字是一个字、俩字节。动态创建有好处就是你需要多少结点就建立多少结点,给你省很多空间。
解决方案: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) )。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明大二菜鸟求帮助