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

相关文章:

  • 2021-08-10
  • 2022-12-23
  • 2021-07-10
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-13
  • 2022-12-23
猜你喜欢
  • 2021-08-13
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-20
  • 2021-06-28
  • 2022-12-23
相关资源
相似解决方案