实验9-4 函数的返回值为指针变量

实验目的:

进一步理解野指针。

实验步骤:

1.分析下面的程序(例9-9)。

#include <stdio.h>

int *test( )

{

          int i = 5, *pi = &i;

          return pi;

}

void test2( )

{

         int j = 3;

}

void main( )

{

         int *pj;

          pj = test( );

          test2( );

          printf("%d\n", *pj);

}

分析:

程序的输出结果为3,不是5,为什么?

2.比较下面两个程序。

2.1

#include <stdio.h>

void test(int *pi)

{

       *pi= 5;

}

void main( )

{

       int*p;

       test(p);

       printf("程序中其它功能……\n");

}

2.2

#include <stdio.h>

void test(int *pi)

{

       if(pi== NULL)

       {

              printf("错误!实参为空指针!\n");

              return;

       }

       *pi= 5;

}

void main( )

{

       int*p = NULL;

       test(p);

       printf("程序中其它功能……\n");

}

分析:

1)两个程序中有语法错误吗?

2)两个程序运行结果相同吗?为什么?

注意:

在函数中检测指针参数是否为空指针会提高代码的健壮性。负责的程序员必须保证指针变量指向合法的地址。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值