奶头挺立呻吟高潮av全片,成人试看120秒体验区,性欧美极品v,A片高潮抽搐揉捏奶头视频

C語言

鏈表的C語言實現方法編程學習

時間:2024-06-12 15:30:18 C語言 我要投稿
  • 相關推薦

鏈表的C語言實現方法編程學習

  C語言的應用范圍廣泛,具備很強的數據處理能力,不僅僅是在軟件開發上,而且各類科研都需要用到C語言,適于編寫系統軟件,三維,二維圖形和動畫,具體應用比如單片機以及嵌入式系統開發。以下是小編為大家搜索整理鏈表的C語言實現方法,希望能給大家帶來幫助!更多精彩內容請及時關注我們考試網!

鏈表的C語言實現方法編程學習

  一、為什么用動態內存分配

  但我們未學習鏈表的時候,如果要存儲數量比較多的同類型或同結構的數據的時候,總是使用一個數組。比如說我們要存儲一個班級學生的某科分數,總是定義一個float型(存在0.5分)數組:

  float score[30];

  但是,在使用數組的時候,總有一個問題困擾著我們:數組應該有多大?

  在很多的情況下,你并不能確定要使用多大的數組,比如上例,你可能并不知道該班級的學生的人數,那么你就要把數組定義得足夠大。這樣,你的程序在運行時就申請了固定大小的你認為足夠大的內存空間。即使你知道該班級的學生數,但是如果因為某種特殊原因人數有增加或者減少,你又必須重新去修改程序,擴大數組的存儲范圍。這種分配固定大小的內存分配方法稱之為靜態內存分配。但是這種內存分配的方法存在比較嚴重的缺陷,特別是處理某些問題時:在大多數情況下會浪費大量的內存空間,在少數情況下,當你定義的數組不夠大時,可能引起下標越界錯誤,甚至導致嚴重后果。

  那么有沒有其它的方法來解決這樣的外呢體呢?有,那就是動態內存分配。

  所謂動態內存分配就是指在程序執行的過程中動態地分配或者回收存儲空間的分配內存的方法。動態內存分配不象數組等靜態內存分配方法那樣需要預先分配存儲空間,而是由系統根據程序的需要即時分配,且分配的大小就是程序要求的大小。從以上動、靜態內存分配比較可以知道動態內存分配相對于景泰內存分配的特點:

  1、不需要預先分配存儲空間;

  2、分配的空間可以根據程序的需要擴大或縮小。

  二、如何實現動態內存分配及其管理

  要實現根據程序的需要動態分配存儲空間,就必須用到以下幾個函數

  1、malloc函數

  malloc函數的原型為:

  void *malloc (unsigned int size)

  其作用是在內存的動態存儲區中分配一個長度為size的連續空間。其參數是一個無符號整形數,返回值是一個指向所分配的連續存儲域的起始地址的指針。還有一點必須注意的是,當函數未能成功分配存儲空間(如內存不足)就會返回一個NULL指針。所以在調用該函數時應該檢測返回值是否為NULL并執行相應的操作。

  下例是一個動態分配的程序:

  [cpp] view plaincopy

  #include "malloc.h"

  #include "stdlib.h"

  main(void)

  {

  /*count是一個計數器,array是一個整型指針,也可以理解為指向一個整型數組的首地址*/

  int count;

  int *array;

  array=malloc(10 * sizeof(int));

  if(array==NULL)

  {

  printf("Out of memory! ");

  exit(1);

  }

  /*給數組賦值*/

  for(count=0;count<10;count++)

  {

  array[count]=count;

  }

  /*打印數組元素*/

  for(count=0;count<10;count++)

  {

  printf("%2d ",array[count]);

  }

  }

  上例中動態分配了10個整型存儲區域,然后進行賦值并打印。例中if((array(int *) malloc(10*sizeof(int)))==NULL)語句可以分為以下幾步:

  1)分配10個整型的連續存儲空間,并返回一個指向其起始地址的整型指針

  2)把此整型指針地址賦給array

  3)檢測返回值是否為NULL

  2、free函數

  由于內存區域總是有限的,不能不限制地分配下去,而且一個程序要盡量節省資源,所以當所分配的內存區域不用時,就要釋放它,以便其它的變量或者程序使用。這時我們就要用到free函數。

  其函數原型是:

  void free(void *p)

  作用是釋放指針p所指向的內存區。

  其參數p必須是先前調用malloc函數或calloc函數(另一個動態分配存儲區域的函數)時返回的指針。給free函數傳遞其它的值很可能造成死機或其它災難性的后果。

  注意:這里重要的是指針的值,而不是用來申請動態內存的指針本身。例:

  int *p1,*p2;

  p1=malloc(10*sizeof(int));

  p2=p1;

  ……

  free(p2) /*或者free(p2)*/

  malloc返回值賦給p1,又把p1的值賦給p2,所以

【鏈表的C語言實現方法編程學習】相關文章:

如何學習C語言編程10-28

怎樣學習c++c語言編程10-26

C語言socket編程使用方法06-20

C語言的循環鏈表和約瑟夫環09-29

C語言socket編程使用方法簡介07-29

C語言編程基礎08-17

C語言程序的實現09-27

C語言入門什么是編程語言10-12

C語言的HashTable簡單實現10-12

C語言中返回字符串函數的實現方法09-19

主站蜘蛛池模板: 开江县| 灵台县| 仙桃市| 阳信县| 永清县| 酉阳| 桂林市| 宁蒗| 安达市| 四会市| 禄丰县| 民丰县| 呼和浩特市| 襄城县| 河池市| 楚雄市| 福贡县| 湖北省| 九龙坡区| 绥中县| 葫芦岛市| 锡林浩特市| 大足县| 兴宁市| 嘉定区| 长岭县| 浮山县| 鄂伦春自治旗| 闸北区| 巴马| 当雄县| 满城县| 达孜县| 金溪县| 浦东新区| 华池县| 盐源县| 洪湖市| 唐山市| 石泉县| 长宁县|