程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 指針 && 動態內存分配,c語言指針

指針 && 動態內存分配,c語言指針

編輯:C++入門知識

指針 && 動態內存分配,c語言指針


C++中的動態內存分配機制

c++中使用new和delete來完成在堆上對動態內存的分配和釋放。

注.所有指針都應該被初始化

  如果指針指向的動態內存被釋放或沒有指向合法的地址,就應該將指針設置為nullptr,否則內存洩漏。

變量:

  double* pvalue {};

  pvalue=new double;

  *pvalue=9.0;

  或

  double* pvalue {};

  pvalue=new double {9.0};

  或合並為一句

  double* pvalue {new double{9.0}};

  delete pvalue;

數組:

  char* pstr {new char[20]};

  delete [] pstr;

  pstr = nullptr;

  可以順便初始化:int *data {new int [10] {2,3,4}};

多維數組:

  double (*pbeans)[4] {};

  pbeans= new double [3][4];

  或合為一步:double (*pbeans)[4] {new double [3][4]};

  delete [] pbeans;

  pbeans = nullptr;

 

C語言中的動態內存分配機制

  malloc:

    double *ptd;

    ptd = (double *)malloc( N * sizeof(double));

    free(ptd);

    請求N個double類型的空間

 

  calloc:

    long *newmem;

    newmem =(long *)calloc( N,sizeof(long));

    第一個參數是所需內存單元的數量,第二個參數是每個單元以字節計的大小。calloc將塊中全部位都置0。

 

  變長數組(VLA)中的動態內存分配:

    int n=5;

    int m=6;

      int ar[n][m];  //變長數組

      int (*p1)[6];

      int (*p2)[m];  //變長數組

    p1=(int (*)[6])malloc( n *6 *sizeof(int));

    p2=(int (*)[m])malloc( n *m *sizeof(int));  //變長數組

注:在數組傳遞作為參數傳遞過程中必須指定列

  如:double (int ar[][6]);

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved