首页 软件代码

C与C++动态分配空间


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(空间的指针)
(这里只针对本次案例,其他的写法请参考相关书籍)





文章评论