unsigned char 与unsigned short转换的一道题,怎么会输出1+2=65534 ?
- C/C++ code
#include <stdio.h>#include <stdlib.h>unsigned short *Sum(unsigned char a,unsigned char b){ unsigned short S=0; S=a+b; return &S;}int main(void){ unsigned short *p=NULL; unsigned char a=1,b=2; p=Sum(a,b); printf("%u+%u",a,b); printf("=%u",*p); getchar(); return EXIT_SUCCESS;}怎么会输出1+2=65534?想了半天没弄明白?求教各位大侠。
[解决办法]
unsigned short S=0;
S=a+b;
return &S;
返回栈上东西?
[解决办法]
你那是返回了个局部的指针,在函数调用完的时候,就被释放掉了
[解决办法]
s被返回时内存已经被回收