技术解析
#include
#include
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