zoukankan      html  css  js  c++  java
  • 动态分配储存与链表

    C语言中不允许动态数组类型,但C提供了一些内存管理函数,使用其可以动态的分配内存空间。常用的内存管理函数有以下三个:

    (1)分配内存空间函数malloc、calloc;

    (2)释放内存空间函数free;

    1、malloc函数

    原型:void *malloc(unsigned int size);

    其作用是在内存的动态存储区中分配一个长度为size的连续空间(size是一个无符号函数)。

    此符号的返回值是一个指向分配域起始地址的指针(类型为void)。

    若此函数未能成功的执行,则返回空指针(NULL)。

    2、calloc函数

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

    作用:在内存的动态储存区中分配n个长度为size的连续空间。

    函数返回一个指向分配域起始地址的指针;

    若分配不成功,则返回NULL值。

    用calloc函数可以为一维数组开辟动态储存空间,n为数组元素个数,每个元素长度为size。

    3、free函数

    原型:void free(void *p)

    作用:释放由p指向的内存区,使这部分内存区能被其他变量使用。p是最近一次调用calloc或malloc函数时返回的值。

    free函数无返回值。

     链表

    链表是一种常见的重要的数据结构,是动态地进行储存分配的一种结构。

    头指针:存放一个地址,该地址指向第一个元素。

    结点:用户需要的实际数据和链接节点的指针。

    例:

    #include "StdAfx.h"
    #include<stdio.h>
    #include<string.h>
    struct student
    {
        long num;
        float score;
        struct student *next;
    };
    
    void main()
    {
        struct student a,b,c,*head;
        a.num=10101;
        a.score=98.5;
        b.num=10102;
        b.score=88.5;
        c.num=10103;
        c.score=78.5;
        head=&a;
        a.next=&b;
        b.next=&c;
        c.next=NULL;
        do
        {
            printf("%ld%5.1f
    ",head->num,head->score);
            head=head->next;
        }
        while(head!=NULL);
    }
  • 相关阅读:
    mysql 常用方法
    jquery input click取消默认事件
    Sprint Boot 集成mongodb
    MSSQL复习笔记
    H5(3)基础知识点补充
    H5(2) 前端基础知识点补充
    H5(1) h5的新特性
    用队列的方式实现日志
    Spring.Net的快速应用
    总结2016/展望2017
  • 原文地址:https://www.cnblogs.com/lvfengkun/p/10392829.html
Copyright © 2011-2022 走看看