<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Hopes

    Start Here..

     

    c/c++ 動態申請數組

     

    c/c++ 動態申請數組

    分類: 一些常識 2435人閱讀 評論(0) 收藏 舉報

    new和delete運算符用于動態分配和撤銷內存的運算符

    new用法:

              1.     開辟單變量地址空間

                   1)new int;  //開辟一個存放數組的存儲空間,返回一個指向該存儲空間的地址.int *a = new int 即為將一個int類型的地址賦值給整型指針a. 

                   2)int *a = new int(5) 作用同上,但是同時將整數賦值為5

              2.     開辟數組空間

                   一維: int *a = new int[100];開辟一個大小為100的整型數組空間

                   二維: int **a = new int[5][6]

                   三維及其以上:依此類推.

             一般用法: new 類型 [初值]

    delete用法:

              1. int *a = new int;

                   delete a;   //釋放單個int的空間

              2.int *a = new int[5];

                   delete [] a; //釋放int數組空間

              要訪問new所開辟的結構體空間,無法直接通過變量名進行,只能通過賦值的指針進行訪問.

              用new和delete可以動態開辟,撤銷地址空間.在編程序時,若用完一個變量(一般是暫時存儲的數組),下次需要再用,但卻又想省去重新初始化的功夫,可以在每次開始使用時開辟一個空間,在用完后撤銷它.

     

    1. #include <iostream>  
    2. using namespace std;  
    3. int main()  
    4. {  
    5.     char *p=new char[10];  
    6.     scanf ("%s",p);  
    7.     printf ("%s",p);  
    8.     delete []p;  
    9.     while (1);  
    10.     return 0;  
    11. }  


     這是 二維數組的申請方法

    1. #define   ROW   100   
    2. #define   COL   200   
    3. #define   T   char   (int,float,....)   //通用數據類型   
    4. T   **   pTemp   ;   
    5. *pTemp   =   new   T[ROW]   ;   
    6. for   (int   i   =   0   ;   i   <   COL   ;   i   ++)   
    7.       pTemp[i]   =   new   T[COL};   
    8.   
    9. /////////////////delete   
    10. for   (int   i   =0   ;   i   <   COL   ;   i   ++)   
    11.         delete   []   pTemp[i]   ;   
    12. delete   [][]pTemp   ;  


     

    1.分配內存空間函數malloc

      調用形式: (類型說明符*) malloc (size) 功能:在內存的動態存儲區中分配一塊長度為"size" 字節的連續區域。函數的返回值為該區域的首地址。 “類型說明符”表示把該區域用于何種數據類型。(類型說明符*)表示把返回值強制轉換為該類型指針。“size”是一個無符號數。例如: pc=(char *) malloc (100); 表示分配100個字節的內存空間,并強制轉換為字符數組類型, 函數的返回值為指向該字符數組的指針, 把該指針賦予指針變量pc。

      2.分配內存空間函數 calloc

      calloc 也用于分配內存空間。調用形式: (類型說明符*)calloc(n,size) 功能:在內存動態存儲區中分配n塊長度為“size”字節的連續區域。函數的返回值為該區域的首地址。(類型說明符*)用于強制類型轉換。calloc函數與malloc 函數的區別僅在于一次可以分配n塊區域。例如: ps=(struet stu*) calloc(2,sizeof (struct stu)); 其中的sizeof(struct stu)是求stu的結構長度。因此該語句的意思是:按stu的長度分配2塊連續區域,強制轉換為stu類型,并把其首地址賦予指針變量ps。

      3.釋放內存空間函數free

      調用形式: free(void*ptr); 功能:釋放ptr所指向的一塊內存空間,ptr 是一個任意類型的指針變量,它指向被釋放區域的首地址。被釋放區應是由malloc或calloc函數所分配的區域。

     

    1. #include <stdio.h>   
    2. #include <malloc.h>   
    3. #include <stdlib.h>   
    4.   
    5. void main()   
    6. {   
    7.      int *array = 0, num, i;   
    8.      printf("please input the number of element: ");   
    9.      scanf("%d", &num);   
    10.   
    11.      // 申請動態數組使用的內存塊   
    12.      array = (int *)malloc(sizeof(int)*num);   
    13.      if (array == 0)             // 內存申請失敗,提示退出   
    14.      {   
    15.          printf("out of memory,press any key to quit...\n");   
    16.          exit(0);             // 終止程序運行,返回操作系統   
    17.      }   
    18.   
    19.      // 提示輸入num個數據   
    20.       printf("please input %d elements: ", num);   
    21.       for (i = 0; i < num; i++)   
    22.          scanf("%d", &array);   
    23.   
    24.      // 輸出剛輸入的num個數據   
    25.      printf("%d elements are: \n", num);   
    26.      for (i = 0; i < num; i++)   
    27.          printf("%d,", array);   
    28.   
    29.      printf("\b \n");    // 刪除最后一個數字后的分隔符逗號   
    30.      free(array);        // 釋放由malloc函數申請的內存塊   
    31. }  

    posted on 2013-09-20 20:05 ** 閱讀(279) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    導航

    統計

    公告

    你好!

    常用鏈接

    留言簿(2)

    隨筆檔案

    文章分類

    文章檔案

    新聞檔案

    相冊

    收藏夾

    C#學習

    友情鏈接

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 中文字幕无码精品亚洲资源网久久 | 亚洲av永久无码| 久久久久久av无码免费看大片| 又大又粗又爽a级毛片免费看| 亚洲AⅤ男人的天堂在线观看| 色www永久免费视频| 亚洲AV一区二区三区四区| 国产成人精品高清免费| 男女交性无遮挡免费视频| 亚洲AV无码成人精品区大在线| 猫咪www免费人成网站| jlzzjlzz亚洲乱熟在线播放| 精品久久久久久国产免费了 | 亚洲男人的天堂www| 在线观看特色大片免费网站| 亚洲AV无码成人专区片在线观看| 日本免费人成视频在线观看| 亚洲国产电影在线观看| 毛片免费vip会员在线看| 日韩国产欧美亚洲v片| 亚洲国产成人精品91久久久| 青青操免费在线观看| 91在线亚洲精品专区| 国内大片在线免费看| 四虎影视永久在线精品免费| 亚洲国产精品VA在线观看麻豆| 亚洲视频在线观看免费视频| 亚洲日本天堂在线| 亚洲一本大道无码av天堂| 久久aa毛片免费播放嗯啊| 99久久婷婷国产综合亚洲| 亚洲高清无码专区视频| 8x网站免费入口在线观看| 久久久久亚洲国产| 亚洲综合伊人久久大杳蕉| 最近新韩国日本免费观看| 国产成人综合亚洲| 亚洲男人天堂av| 四虎免费久久影院| 99re热精品视频国产免费| 国产精品亚洲专区无码唯爱网|