求大神看看c++代码,不知道为啥数组首地址无法传出来

int*tobinary(intm=0)throw(int){intre_result[8]={0,0,0,0,0,0,0,0};//reverseresultintre... int* tobinary( int m = 0 )throw( int ){
int re_result[ 8 ] = { 0, 0, 0, 0, 0, 0, 0, 0 };//reverse result
int result[ 8 ] = { 0, 0, 0, 0, 0, 0, 0, 0 };
int k = 0;
int i = 0;
if( m > 255 || m < 0 ) throw m;
while( m != 0 ){
k = m % 2;
m = m / 2;

re_result[ i ] = k;
i += 1;
}
/*check the array re_result
for( int i = 0; i <= 7; ++i ){
cout<<re_result[ i ];
}
cout<<endl;
*/

for( int i = 0; i <= 7; ++ i ){
result[ i ] = re_result[ 7 - i ];
}

/*check the array result
for( int i = 0; i <= 7; ++i ){
cout<<result[ i ];
}
cout<<endl;
*/

return result;
}

中间对 反向结果 和 结果 数组的测试都是正常的,不知道为什么无法传递 结果 数组的地址
展开
 我来答
isaaccwoo
推荐于2018-05-13 · TA获得超过152个赞
知道小有建树答主
回答量:76
采纳率:0%
帮助的人:105万
展开全部
result是在函数内部的局部变量,传指针固然指的是result的位置,但是函数在返回之后,该位置可能存放的不是result的值了

建议把编译器的warning选项开启,大部分编译器会提示问题的,随便试了两个:
gcc 4.9.2 下提示:[Warning] address of local variable 'result' returned [-Wreturn-local-addr]
MSVC2013 (18.00.40629 for x86)下提示warning C4172: returning address of local variable or temporary
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式