zoukankan      html  css  js  c++  java
  • static用法一

    #include "stdafx.h"
    #include "string.h"
    struct student
    {
     int num;
     char name[20];
     char sex;
    };
    struct student *fun(struct student stu)
    {
     struct student *p;
     stu.num = 10;
     strcpy_s(stu.name, "abc");
     stu.sex = 'G';
     p = &stu;
     return p;
    }
    int main()
    {
     struct student stu1,*pp;
     stu1.num = 10;
     strcpy_s(stu1.name, "def");
     stu1.sex = 'M';
     printf("num=%d name=%s sex=%c
    ",stu1.num,stu1.name,stu1.sex);
     pp = fun(stu1);
     printf("num=%d name=%s sex=%c
    ", (*pp).num, (*pp).name, (*pp).sex);//name输出乱码,求解释
     return 0;
    }
    进入fun函数时,会创建一个局部变量形参stu,这个形参stu与实参stu1不是一回事,stu只是与stu1 数据一模一样的复制品而已。当fun函数对stu操作结束后返回stu的指针,但因为stu是局部变量,在fun函数结束后会释放掉,由于main函数使 用fun函数返回的指针pp,pp指向了已被释放掉的stu,所以打印时必然输出些乱码。改为static变量
    
     
  • 相关阅读:
    P2149 [SDOI2009]Elaxia的路线
    P1346 电车
    P3174 [HAOI2009]毛毛虫
    P3047 [USACO12FEB]附近的牛Nearby Cows
    P4053 [JSOI2007]建筑抢修
    P2607 [ZJOI2008]骑士
    [HNOI2006]马步距离
    [POI2014]Hotel
    [BZOJ3856]Monster
    [BZOJ2819]Nim
  • 原文地址:https://www.cnblogs.com/timssd/p/4505880.html
Copyright © 2011-2022 走看看