1. 程式人生 > 實用技巧 >動態陣列

動態陣列

遵循原則

→ 在建立的時候從外層往裡層,逐層建立;

→ 釋放的時候從裡層往外層,逐層釋放。

構建所需函式

函式原型 返 回 功能說明
void *malloc(unsigned int size); 成功:返回所開闢空間首地址  失敗:返回空指標 向系統申請 size位元組的堆空間
void *calloc(unsigned int num, unsigned int size); 成功:返回所開闢空間首地址  失敗:返回空指標 按型別申請num個size位元組的堆空間
void free(void *p); 無返回值 釋放p指向的堆空間
void *realloc(void *p,unsigned int size); 成功:返回新開闢空間首地址  失敗:返回空指標 將p指向的堆空間變為 size

(詳細見:https://www.runoob.com/w3cnote/c-dynamic-array.html

eg:建立一維陣列

#include <stdio.h>
#include <stdlib.h>
int main()
{
  int n1,i;
  int *array;
  printf("請輸入所要建立的一維動態陣列的長度:");
  scanf("%d",&n1);
  array=(int*)calloc(n1,sizeof(int));
  for(i=0
;i<n1;i++)   {     printf("%d\t",array[i]);   }   printf("\n");   for(i=0;i<n1;i++)   {      array[i]=i+1;     printf("%d\t",array[i]);   }   free(array);//釋放第一維指標   return 0; }

結果如下

轉自

https://blog.csdn.net/zhanshen112/article/details/80758850?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param