unsigned short *Sum( unsigned char a,unsigned char b);关于指针的一些思考

c语言中的指针实在是令人头疼的事,看了很多有关指针的文章,最近看到这样一道题目,有点恍然大悟就写下了这篇文章,希望对大家有所帮助,也希望指出不足的地方。

首先要说明的是,这道题的答案其实比不是我要讲解的重点,重点是c语言中,指针的传递和返回的问题。我讲解的这道题是有关返回指针的,下面的参考资料中详细的讲解了传递指针的问题。

 unsigned short *Sum( unsigned char a,unsigned char b)
 {
 unsigned short S=0;
 S=a+b;
return &S;
}

#include <stdio.h>


int main()
{
unsigned short *p=NULL;
unsigned char a=1,b=2;
p=Sum(a,b);
printf("%u+%u",a,b);
printf("=%u\n",*p);
retun 0;
 }

给出的答案是:1+2=65534;但我在自己电脑上运行了结果是:1+2=65408;大家可以试试。先不管最后的结果是什么,这个程序有个很大的问题就是它的return语句。参考博客http://www.cnblogs.com/pied/archive/2010/01/08/1642021.html。返回的是个“栈内存”地址,也就是说这个地址在函数调用结束的时候是会被释放掉,这个地址所指向的变量的数据也会消失,所以导致这个值是无法预料的。这就导致了我的出的结果和给出的答案不一样。

还有就是以前看到过很多关于getmemory函数有关指针的经典例题。大家可以上网搜搜,讲解的很详细。

如果有错之处,恳请大家指出。

下面这个地址给了我们使用static关键字的实例:

http://zhidao.baidu.com/question/479077762.html&__bd_tkn__=78b5573c3d1bd8384e0ea877a2f827b8843889fa8078338d51fed8133ea5c69d362ad36bb4bcda3b39bb3949f6bbe47087ac3af56e60b1f4e7eb60157c5bf4329a60aefe5c0f03de01252708a041b10833019e707823c88aa13f477c022b465dcd667c404ec1a8d8e9078faccbdc8c0ac23726f647a9

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值