求大神看看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;
}
中间对 反向结果 和 结果 数组的测试都是正常的,不知道为什么无法传递 结果 数组的地址 展开
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;
}
中间对 反向结果 和 结果 数组的测试都是正常的,不知道为什么无法传递 结果 数组的地址 展开
1个回答
展开全部
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
建议把编译器的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
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询