#include<stdio.h>
#include<stdlib.h>
typedef struct
{
int age;
}test_t;
void test2(test_t *test2_val)
{
if(!test2_val)
{
printf("test2_val=null.\n");
}
else
{
printf("test2_val != null\n");
}
}
int test(test_t *test_val)
{
test_t *bbb;
if(!test_val)
{
printf("val=null.\n");
}
else
{
printf("val != null\n");
}
test2(bbb);
return 0;
}
void fun(test_t *fun_val)
{
test_t *bbb;
test(fun_val);
printf("call test(bbb)--->\n");
test(bbb);
printf("<-----\n");
}
int main(void)
{
test_t *aaa;
fun(aaa);
printf("------after------>\n");
test(aaa);
}
下面是上面这段代码的运行结果,编译和运行环境是 gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3)。 我的疑问是为什么会有!=null 这样的打印?
val=null.
test2_val != null
call test(bbb)--->
val=null.
test2_val != null
<-----
------after------>
val=null.
test2_val != null
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.