unsigned short *Sum( unsigned char a,unsigned char b);关于指针的一些思考
来源:互联网 发布:施乐m225z网络扫描 编辑:程序博客网 时间:2024/06/08 19:33
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
- unsigned short *Sum( unsigned char a,unsigned char b);关于指针的一些思考
- 关于unsigned short,char,unsigned int 之间的赋值
- 关于unsigned char、unsigned short使用printf(“%d”)进行输出的结果
- unsigned char, unsigned int
- (unsigned char *)
- unsigned char
- unsigned char
- unsigned char 的值
- unsigned char 的使用
- char, unsigned char = BYTE; short, unsigned short = WORD; long, unsigned long = DWORD;
- char,unsigned char,unsigned short,有符号和无符号之间的转换
- CUDA 纹理 unsigned char转化为unsigned short
- char,short,int,long,unsigned,signed
- signed char & unsigned char
- unsigned char与char
- unsigned char和char
- unsigned char与char
- char 与 unsigned char
- 黑马程序员—C#继承
- 常用JDBC连接数据库方法
- 可以让你少奋斗十年的工作经验
- HTTP Specification_1.1
- java多线程学习总结(一)
- unsigned short *Sum( unsigned char a,unsigned char b);关于指针的一些思考
- 错误和错误处理
- 《VC++深入详解》孙鑫经典VC++视频教程
- LINQ to Entities 查询一
- Snowflake Snow Snowflakes poj3349
- 改变GridView文本框内容,另一列自动更新
- DLINQ(LINQ to SQL)之事务处理和并发处理
- 大对象(LOB)
- Windows 7和Windows 8下安装SAS