C语言,calloc用法,用他实现把结构体数组的数据拷贝到链表,不能用mallloc

int main(void)
{
int i,j,z,n,max;
char ch,chz;
char num[Q];
student_list *p=stu,*p1;
max=10;
if((p1=(student_list *)calloc(max,sizeof(student_list)))==NULL)//
{
printf("\nno!");
exit(0);
}
for(i=0;i<max;i++)
{
*p1=p[i];
p1=p1->next;
}

calloc和malloc 功能基本一样都是申请连续内存空间,返回首地址指针。

区别就是calloc自带了初始化为零,而malloc申请后,需要人为初始化值。

和数据结构的拷贝没有任何直接关系!

原型:void *calloc(unsigned n,unsigned size);

我写了个简单的插入链表,你参考吧

#include <stdio.h>
#include <stdlib.h>
typedef struct student_list
{
    char name[6];
    struct student_list *next;
}SL;
void insertSL(SL *slHead);//添加结构数据到链表  参数:头节点指针
int main(void)
{
    SL *slHead=(SL *)calloc(1,sizeof(SL));//头节点指针不存放数据,用于遍历
    slHead->next=NULL;


    insertSL(slHead);//想插入几个,就调用几次
    insertSL(slHead);
    insertSL(slHead);
    insertSL(slHead);

    while(slHead->next!=NULL)//打印
    {
        printf("%s\n",slHead->next->name);
        slHead=slHead->next;
    }
    return 0;
}

void insertSL(SL *slHead)
{
    SL *slNew=(SL *)calloc(1,sizeof(SL));
    printf("请输入节点名称:");
    scanf("%s",slNew->name);
    while(slHead->next!=NULL)
        slHead=slHead->next;
    slHead->next=slNew;

}

温馨提示:答案为网友推荐,仅供参考
相似回答