C基础--指针与函数返回值

#include <stdio.h>
#define A 0
int funcA(int a, int b)
{
    return a + b;
}

/*把指针作为函数的返回值*/
int * funcB(int a, int b)
{
    static int c = A;
    c = a + b;
    return &c;
}
/*通过函数进行内存的申请*/
/*
* 参数:要申请的内存大小
* 返回值:申请好的内存的首地址 
* 这是一种不好的方式
*/
int * funcC(int size)
{
    return (int *)malloc(size);
}
/*通过函数进行内存的申请*/
/*
* 参数:要申请的内存能够保存多少个int变量
* 返回值:申请好的内存的首地址
*/
int * funcD(int sum)
{
    return (int*)malloc(sizeof(int)* sum);
}

/*函数返回值测试*/
int main001(int argc, char **argv)
{
    int *p_int, temp;
    p_int = funcB(2, 5);
    printf("%d 
", *p_int );

    temp = *funcB(4, 8); /*这样写是不推荐的形式*/

    /* &temp = funcB(5, 7); */ /*这样是错误的*/


    system("pause");
    return 0;
}

int main(int argc, char **argv)
{
    int* p_int;

    /*想想看,前面声明的哪个函数原型合理?*/
    p_int = funcC(20);
    for (int i = 0; i < 20 / sizeof(int); i++)
    {
        p_int[i] = i; 
    }
    p_int = funcD(5);
    for (int i = 0; i < 5; i++)
    {
        p_int[i] = i;
    }
    system("pause");
    return 0;
}
原文地址:https://www.cnblogs.com/zhuyaguang/p/4828042.html