由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 问个简单的C++ 函数参数问题
相关主题
什么情况下pass by reference比pass by pointer好?C++ Q93 - Q95
一个简单的java题谁对design pattern比较熟?
最新某公司onsite面试题谁给改一个线程安全的smarter pointer类
怎么才能掌握好C++里面的指针和引用?来问一个关于smart pointer的弱问题
void * 和 char * 有区别吗?cs/ce刚毕业找sw工作面试准备的建议
请教一个 c++ member function pointer 问题can a pointer point to itself in c++?
Question about type conversion指针函数, 函数指针, 头大。。
借人气问个C递归函数的问题array of pointers to functions
相关话题的讨论汇总
话题: int话题: const话题: c++话题: void话题: pointer
进入JobHunting版参与讨论
1 (共1页)
i******t
发帖数: 22541
1
reference to pointer问题
void f(const int * & p)
{
int i =0;
i = p[0];
cout<< i< system("PAUSE");
}
int main()
{
int * p =new int[1];
p[0] =102;
f(p);
return 1;
}
这样编译不过去
error C2664: 'f' : cannot convert parameter 1 from 'int *' to 'const int *&'
如果吧函数改一下就可以了void f( int * & p) 或者void f( int * p)
都没问题
奇怪为啥最开始那个不行呢?
r*******y
发帖数: 1081
2
我试了一下, 用 const int * const & 也行。
不过还是不明白。

【在 i******t 的大作中提到】
: reference to pointer问题
: void f(const int * & p)
: {
: int i =0;
: i = p[0];
: cout<< i<: system("PAUSE");
: }
: int main()
: {

r*******e
发帖数: 7583
3
按理说 const & 跟 & 是等价的
因为引用一旦初始化就不能被改变了,本身就是const

【在 r*******y 的大作中提到】
: 我试了一下, 用 const int * const & 也行。
: 不过还是不明白。

i******s
发帖数: 301
4
定义时用template就没问题。
我怀疑是C++ compiler 在解析时优先考虑的一个const int *的指针的引用,而不是一
个const (int *指针的引用),解析顺序问题。
template
void f(const T & p)
...

【在 i******t 的大作中提到】
: reference to pointer问题
: void f(const int * & p)
: {
: int i =0;
: i = p[0];
: cout<< i<: system("PAUSE");
: }
: int main()
: {

n*******0
发帖数: 2002
5
const int * &p 里面的const 是修饰int 的。所以开始的定义说的是p指向的是const
int,也就是只能读不能改的int。由于main里面p定义成的是一个内容是int 的数组,
内容是可改的,所以调用f的时候编译器就报错了。
俺的理解。。。

【在 i******t 的大作中提到】
: reference to pointer问题
: void f(const int * & p)
: {
: int i =0;
: i = p[0];
: cout<< i<: system("PAUSE");
: }
: int main()
: {

d*********i
发帖数: 628
6
main里的int 数组不是const型
i******t
发帖数: 22541
7
i don't think so.
My friend can compile without error
I guess it's the problem of different compiler that cause the problem.

const

【在 n*******0 的大作中提到】
: const int * &p 里面的const 是修饰int 的。所以开始的定义说的是p指向的是const
: int,也就是只能读不能改的int。由于main里面p定义成的是一个内容是int 的数组,
: 内容是可改的,所以调用f的时候编译器就报错了。
: 俺的理解。。。

i******t
发帖数: 22541
8
f(const int * p) does not need p must a const array
It just means the object that p point cannot be changed
in my understanding

【在 d*********i 的大作中提到】
: main里的int 数组不是const型
c*******7
发帖数: 465
9
From "int *" to "const int *", C++ need to create a temporary const
pointer for you. Unfortunately, C++ Standard forbids creating such pointer
for non-const reference. This also explains why "const int * const &"
actually works as someone suggested.

【在 i******t 的大作中提到】
: reference to pointer问题
: void f(const int * & p)
: {
: int i =0;
: i = p[0];
: cout<< i<: system("PAUSE");
: }
: int main()
: {

1 (共1页)
进入JobHunting版参与讨论
相关主题
array of pointers to functionsvoid * 和 char * 有区别吗?
One question about Void pointer (转载)请教一个 c++ member function pointer 问题
My Microsoft Phone InterviewQuestion about type conversion
说一下pressure interview。。。借人气问个C递归函数的问题
什么情况下pass by reference比pass by pointer好?C++ Q93 - Q95
一个简单的java题谁对design pattern比较熟?
最新某公司onsite面试题谁给改一个线程安全的smarter pointer类
怎么才能掌握好C++里面的指针和引用?来问一个关于smart pointer的弱问题
相关话题的讨论汇总
话题: int话题: const话题: c++话题: void话题: pointer