|
发表于 2014-6-24 08:23:48
|
显示全部楼层
雪域王国 发表于 2014-6-24 08:02
car不是static(静态局部变量)吗,在程序运行期间都存在的吗?而且在程序运行阶段也不会初始化啊,那为什 ...
给你加点料- #include <stdio.h>
- #include "stdlib.h"
- typedef struct
- {
- char *no;
- char *color;
- }CAR;
- void func1(CAR *s)
- {
- s->no="nj8812";
- s->color="black";
- printf("%s,%s\n",s->no,s->color);
- }
- void func2(CAR s)
- {
- printf("调用中 s的地址0x%p\n",&s);
- s.no="bj7653";
- s.color="yellow";
- printf("%s,%s\n",s.no,s.color);
-
- }
- main( )
- {
- void func1(),func2();
- CAR car={"fj0236","red"};
- printf("%s,%s\n",car.no,car.color);
- func1(&car);
- printf("%s,%s\n",car.no,car.color);
- printf("调用前 car的地址0x%p\n",&car);
- func2(car);
- printf("%s,%s\n",car.no,car.color);
- printf("调用后 car的地址0x%p\n",&car);
- //调用前后的CAR地址,和func2中的CAR的地址是不一样的,说明,进入函数的时候,构造了一个CAR变量,操作的内存块不一样了,所以会出现楼主说的问题
- //强烈建议不要定义这种结构
- /*
- typedef struct
- {
- char *no;
- char *color;
- }CAR;
- 用数组
- typedef struct
- {
- char no[20];
- char color[20];
- }CAR;
- */
- system("pause");
- }
复制代码 |
|