C语言采用malloc.h函数库进行动态分配
C++有简单的方式 只需要用new函数就行。
例如:输入同学个数n,并分别输入姓名、学号、性别(m,f),用动态分配写出,并输出。
C版:(利用(struct student*)malloc(Len)进行动态分配)
#include<stdio.h>
#include<malloc.h>
#define Len sizeof(struct student)
struct student
{
char name[10];
float num;
char sex;
struct student *link;
};
int main()
{
struct student *p1,*p2,*head;
int x,i;
scanf("%d",&x);
for(i=0;i<=x;i++)
{
if(i==0)
{
head=(struct student*)malloc(Len);
p1=head;
}else
{
p2=(struct student*)malloc(Len);;
p1->link=p2;
p1=p2;
}
if(i!=x)
scanf("%s %f %c",&p1->name,&p1->num,&p1->sex);
else {
p1->link=NULL;
p1=head;
}
}
while(p1->link!=NULL)
{
printf("%s %5.0f %c\n",p1->name,p1->num,p1->sex);
p1=p1->link;
}
}
C++版:(利用new进行动态分配)
#include<iostream>
using namespace std;
int main()
{
struct student
{
char name[10];
float num;
char sex;
struct student *link;
};
student *p1,*p2,*head;
int x,i;
scanf("%d",&x);
for(i=0;i<=x;i++)
{
if(i==0)
{
head=new student;
p1=head;
}else
{
p2=new student;
p1->link=p2;
p1=p2;
}
if(i!=x)
scanf("%s %f %c",&p1->name,&p1->num,&p1->sex);
else {
p1->link=NULL;
p1=head;
}
}
while(p1->link!=NULL)
{
printf("%s %5.0f %c\n",p1->name,p1->num,p1->sex);
p1=p1->link;
}
}
C撤除使用空间采用free(空间的指针)
C++撤除使用空间采用delete(空间的指针)
(这里只针对本次案例,其他的写法请参考相关书籍)