C 動態構建一維數組


/*
    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;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM