在函数内 动态分配内存定义数组

#include<stdio.h>
#include<stdlib.h>


void show_array(int * a, int len);
int * f(void);


int main()
{
    int * a;
    a = f();
    printf("%d", a); //最终输出的pArr与a的值是一样的,输出数组也没变,可是我想,函数结束时,应该是把pArr变量释放了,后面的操作是无法访问pArr所在的内存空间。
//  show_array(a, 5); //但是在函数外调用的,是把pArr所存的地址赋值给了另外一个指针变量(相当于只是给出了内容),所以并不矛盾。外部函数仍可以使用其内部定义的数组。
    free(a);
    return 0;
}

void show_array(int * a, int len)
{
    int i;
    for (i=0; i<len; i++)
    {
        printf("%d", *(a+i));
    }
}


int * f(void)
{
    int i;
    int * pArr = (int)malloc(sizeof(int)*5);
    for(i=0; i<5; i++)
    {
        *(pArr+i) = i;
    }
    printf("%d\n", pArr);
    return pArr;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值