最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言 動態(tài)內(nèi)存分配詳解

 更新時間:2017年06月29日 15:18:53   投稿:lqh  
這篇文章主要介紹了C語言 動態(tài)內(nèi)存分配詳解的相關資料,需要的朋友可以參考下

C語言 動態(tài)內(nèi)存分配詳解

動態(tài)內(nèi)存分配涉及到堆棧的概念:堆棧是兩種數(shù)據(jù)結構。堆棧都是數(shù)據(jù)項按序排列的數(shù)據(jù)結構,只能在一端(稱為棧頂(top))對數(shù)據(jù)項進行插入和刪除。

棧(操作系統(tǒng)):由操作系統(tǒng)自動分配釋放 ,存放函數(shù)的參數(shù)值,局部變量的值等。其操作方式類似于數(shù)據(jù)結構中的棧。

堆(操作系統(tǒng)): 一般由程序員分配釋放, 若程序員不釋放,程序結束時可能由OS回收,分配方式倒是類似于鏈表。

\在C語言中,全局變量分配在內(nèi)存中的靜態(tài)存儲區(qū),非靜態(tài)的局部變量(包括形參)是分配在內(nèi)存的動態(tài)存儲區(qū),該存儲區(qū)被稱為棧。除此之外,c語言還允許建立內(nèi)存動態(tài)分配區(qū)域,以存放一些臨時用的數(shù)據(jù),這些數(shù)據(jù)不必在程序的聲明部分定義,也不必等到函數(shù)結束時才釋放,而是需要時隨時開辟,不需要是隨時釋放。這些詩句臨時存在一個特別的自由存儲區(qū),稱為堆區(qū)。

系統(tǒng)提供了四個庫函數(shù)來實現(xiàn)內(nèi)存的動態(tài)分配:

(1)malloc(size) 在內(nèi)存的動態(tài)存儲區(qū)中分配一個長度為size的連續(xù)空間。
(2)calloc(n,size) 在內(nèi)存的動態(tài)存儲區(qū)中分配n個長度為size的連續(xù)空間。
(3)free(p) 釋放指針變量p做指向的動態(tài)空間。
(4)realloc(p,size) 將指針變量p指向的動態(tài)空間大小改變?yōu)閟ize。

舉個栗子:

#include<stdio.h>
#include<stdlib.h>

int main()
{
  void check(int *);
  int *p1, i;
  p1 = (int *)malloc(5*sizeof(int));
  for ( i = 0; i < 5; i++)
   scanf("%d",p1+i);
  check(p1);
  getchar();
  getchar();
  return 0;
}
void check(int *p)
{
  int i;
  for (i = 0; i < 5; i++)
  if (p[i] < 60) printf("%d", p[i]);
  printf("\n");
}

程序沒有定義數(shù)組,而是開辟了一段動態(tài)自由分配區(qū),輸入數(shù)字時,按照地址復制給動態(tài)數(shù)組的5個元素,p1指向第一個整型數(shù)據(jù),調用check函數(shù)時,p1作為實參傳遞給形參p,因此可以理解為形參p和實參p1公享一段動態(tài)分配區(qū)。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關文章

  • c++中explicit與mutable關鍵字的深入探究

    c++中explicit與mutable關鍵字的深入探究

    這篇文章主要給大家介紹了關于c++中explicit與mutable關鍵字的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-05-05
  • 解析C++中派生的概念以及派生類成員的訪問屬性

    解析C++中派生的概念以及派生類成員的訪問屬性

    這篇文章主要介紹了解析C++中派生的概念以及派生類成員的訪問屬性,是C++入門學習中的基礎知識,需要的朋友可以參考下
    2015-09-09
  • C++線程間的互斥和通信場景分析

    C++線程間的互斥和通信場景分析

    很多朋友對C++線程間的互斥和通信知識掌握不是多牢靠,今天小編通過模擬車站賣票應用場景給大家詳細解析C++線程間的互斥和通信知識,感興趣的朋友跟隨小編一起看看吧
    2021-05-05
  • Linux/C++多線程實例學習十字路口車輛調度

    Linux/C++多線程實例學習十字路口車輛調度

    這篇文章主要為大家介紹了Linux/C++多線程實例學習十字路口車輛調度示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • c++自帶的查找函數(shù)詳解

    c++自帶的查找函數(shù)詳解

    這篇文章主要介紹了c++自帶的查找函數(shù),本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-09-09
  • C++中的狀態(tài)模式全解析

    C++中的狀態(tài)模式全解析

    這篇文章給大家介紹了C++中的狀態(tài)模式,本文結合實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2026-01-01
  • C語言中static的使用方法實例詳解

    C語言中static的使用方法實例詳解

    static一般用于修飾局部變量,全局變量,函數(shù),下面這篇文章主要給大家介紹了關于C語言中static用法的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-07-07
  • C語言通訊錄管理系統(tǒng)課程設計

    C語言通訊錄管理系統(tǒng)課程設計

    這篇文章主要為大家詳細介紹了C語言通訊錄管理系統(tǒng)課程設計,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • C++圖文并茂分析講解模板

    C++圖文并茂分析講解模板

    C++語言的模板技術包括函數(shù)模板和類模板,模板技術是一種代碼重用技術,函數(shù)和類是C++語言中兩種主要的重用代碼形式,這篇文章主要介紹了C++函數(shù)模板和類模板,需要的朋友可以參考下
    2022-09-09
  • c語言左移和右移的示例詳解

    c語言左移和右移的示例詳解

    這篇文章主要介紹了c語言左移和右移的示例詳解,移位操作符的兩個操作數(shù)必須是整型的。整個移位表達式的值的類型也是整型的,而且,左移位操作符與右移位操作符的運算并不對稱。
    2020-07-07

最新評論

大姚县| 吴桥县| 康平县| 泸州市| 宁夏| 呼伦贝尔市| 鹿邑县| 濮阳县| 乌拉特前旗| 措美县| 鹤峰县| 西丰县| 正阳县| 翁牛特旗| 湟源县| 托克逊县| 深水埗区| 九龙县| 新源县| 三原县| 南靖县| 左贡县| 徐汇区| 会东县| 大庆市| 钟祥市| 麦盖提县| 仙游县| 文山县| 监利县| 柞水县| 托克托县| 弋阳县| 平塘县| 平罗县| 临湘市| 贵阳市| 新和县| 衡水市| 陵川县| 二连浩特市|