zoukankan      html  css  js  c++  java
  • 动态内存可以跨函数使用

     程序没有逻辑错误,因为子函数所占用的内存是动态分配的,存储在堆,而不是栈,静态内存之所以丢失是因为函数执行完毕要出栈,堆是手动分配的,函数执行完毕没有free就一直存在,所以p所指向空间不会丢失。


     1 #include<stdio.h>
     2 #include<malloc.h>
     3 struct Student
     4 {
     5   int sid;
     6   int age;   
     7 };
     8 //函数声明
     9 struct Student * CreateStudent();
    10 void ShowStudent(struct Student *);
    11 
    12 int main(void)
    13 {
    14     struct Student * ps;//定义了一个ps变量,存储struct Student类型变量地址
    15     ps = CreateStudent();
    16     ShowStudent(ps);
    17     
    18     return 0;
    19 }
    20 //子函数
    21 struct Student * CreateStudent(void)
    22 {
    23    struct Student * p = (struct Student *)malloc(sizeof(struct Student));
    24    p->sid=102;
    25    p->age=10;
    26    return p; 
    27 }
    28 void ShowStudent(struct Student * pst)
    29 {
    30     printf("%d,%d
    ",(*pst).sid,(*pst).age);
    31     //printf("%d,%d",pst->sid,pst->age);
    32 }
  • 相关阅读:
    关于document.body.scrollTop用法
    set回顾
    用户登录与注册
    编写通讯录2
    利用字典的特性编写一个通讯录
    shelve模块
    shutil模块
    列表的拓展
    随机生成验证码2
    递归与欧几里得算法结合求最大公约数
  • 原文地址:https://www.cnblogs.com/ajiaoa/p/14004254.html
Copyright © 2011-2022 走看看