zoukankan      html  css  js  c++  java
  • C语言,在函数中malloc,关注实参与形参

    下面的 employee.c 演示了如何在函数中通过malloc分配堆内存,并返回调用方。

    为关注重点,把memset()和free()都省了。

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    typedef struct employee
    {
        char name[8];
    } emp;                    // 1、声明结构体,这是打算malloc的类型。
    
    void create(emp** ppe, char* name);
    
    int main(void)
    {
        emp* pe = NULL;            // 2、定义结构体指针,等待malloc
        create(&pe, "Jack");        // 3、把结构体指针的地址做实参传给函数(pe取地址就是ppe)
        printf("Employee %s is here.
    ", pe->name);
        return 0;
    }
    
    void create(emp** ppe, char* name)    // 4、形参接收结构体指针的地址(值传递)
    {
        emp* pe = (emp*)malloc(sizeof(emp));
        strcpy(pe->name, name);
        *ppe = pe;            // 5、将malloc后的结构体指针赋值给解引用的形参(ppe解引用就是pe)
        //ppe = &pe;            // 6、严重错误!!!pe即将出栈,&pe就是个野指针!
                        //    另外,ppe作为形参,即便持有&pe,也不会改变实参的值。
                        //    记住!永远不要返回局部变量的地址。
    }

    运行结果如下:

  • 相关阅读:
    和为S的两个数字
    数字在排序数组中出现的次数
    连续子数组的最大和
    包含min函数的栈
    二进制中1的个数
    变态跳台阶
    android里R.layout.的问题
    eclipse里面设置JVM参数的问题
    perl小记
    机器寻径引导算法(最短路径表)__深搜、栈
  • 原文地址:https://www.cnblogs.com/godwithus/p/12677205.html
Copyright © 2011-2022 走看看