/*
2020,6,20,動態構建一維數組
str = (char *) realloc(str, 25);動態調整分配的內存大小
*/
#include<stdio.h>
#include<malloc.h>
int main(void)
{
int a;
int * li;
printf("請輸入數組的個數:"); //定義數組的元素個數
scanf("%d",&a);
getchar();
//相當於 int li[5]
li = (int *)malloc(a * 4); //構建一個int類型數組,數組長度是int(4個字節)乘以自定義的數組長度a,然后轉換成int *類型
printf("%u\n",li);
for(int i = 0; i < a; i++)
{
printf("請輸入第%d個元素的值:",i+1);
scanf("%d",&li[i]); //直接就可以用數組的方式操作了
getchar();
}
for(int i = 0; i < a; i++)
{
printf("%d\n",li[i]);
}
free(li); //釋放動態數組
return 0;
}
------------------------------------------------------------------------------------------------------------------------------------------------------------------
#include<stdio.h>
#include<malloc.h>
void f(int ** b)
{
//跨函數使用需要用動態內存分配,如果用靜態int i = 10,當函數結束時內存空間會被程序釋放導致邏輯錯誤
*b = (int *)malloc(sizeof(int));
**b = 10;
}
int main(void)
{
int * a;
f(&a);
printf("%d",*a);
return 0;
}
