level 10
挂羊头卖犬肉
楼主
#include <iostream>
using namespace std;
int max(int *p,int *q)
{
return *p>*q?*p:*q;
} int main()
{
int x=5;
int y=3;
//int *a=&x; //这两行是可以正确运行的,输出5
//int *b=&y;
const int *a=&x; //当使用这两行的时候,VS2008不报错,但是输出不正确
const int *b=&y; //输出为012ff60
cout<<max(a,b)<<endl;
return 0;
}
求问当一个函数形参为 int * 的时候,是否是不能直接用 const int * 的实参来充当参数,应该是直接报错的吧?
我的这段代码vs2008上不报错,且当把实参换成 int * const a=&x的时候,不报错,输出结果还正确,不知道gcc上运行这段代码的结果是什么,求帮助。
2012年11月19日 03点11分
1
using namespace std;
int max(int *p,int *q)
{
return *p>*q?*p:*q;
} int main()
{
int x=5;
int y=3;
//int *a=&x; //这两行是可以正确运行的,输出5
//int *b=&y;
const int *a=&x; //当使用这两行的时候,VS2008不报错,但是输出不正确
const int *b=&y; //输出为012ff60
cout<<max(a,b)<<endl;
return 0;
}
求问当一个函数形参为 int * 的时候,是否是不能直接用 const int * 的实参来充当参数,应该是直接报错的吧?
我的这段代码vs2008上不报错,且当把实参换成 int * const a=&x的时候,不报错,输出结果还正确,不知道gcc上运行这段代码的结果是什么,求帮助。
