int* const& 是什么类型?

pyl2001 2003-12-12 02:56:03
int* const& max(int* const& a , int* const& b)
{
return *a > *b ? a : b;
}
int main(int argc, char** argv)
{
int *a, *b;
int aa = 10;
int bb = 14;
a = &aa; b = &bb;
int *p = max(a, b);
int ret = *p;
return 0;
}
...全文
96 15 打赏 收藏 举报
写回复
15 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
liem 2003-12-16
int * const &b是指针的引用。其中const修饰*还是修饰&?
由于引用本身就是const的,因此从逻辑讲,const是修饰*的。
b是一个const指针的引用。
  • 打赏
  • 举报
回复
xiaocai365 2003-12-16
const int *p
: p is a pointer to const int

int * const p
: p is a const pointer to int

const int * const p
: p is a const pointer to const int

int* const& p
: p is a const reference of a pointer to int
  • 打赏
  • 举报
回复
glacierrr 2003-12-15
int* const& a
int *const a是一个int型指针常量,a本身不能改变,但其中a指向的int型值可以改
加了&估计只是为了不想传值而已
看下面的程序
int* const& max(int* const& a , int* const& b)
{
// *a = 0; //编译器会告诉你a不能赋值,这样相当于保护了实参不会被函数内部修改
return *a > *b ? a : b;
}


void main()
{
int a = 10;
int b = 6;
cout << *max(&a, &b);
}

a指向的int型值可以改变的,本程序在vc6下运行通过
  • 打赏
  • 举报
回复
dext 2003-12-15
返回较大的整数 传入两个指向整数的指针 const 是不修改这两个指针
  • 打赏
  • 举报
回复
jeckyz 2003-12-15
拆开来理解:

int* const --- 一个不可变的 integer 型指针, 所谓"不可变"是指指针不可变,所指的内容是可变的.

再加上一个引用操作符"&", 也就是这种指针的引用.

好好体会一下,我相信你能明白过来 :)
  • 打赏
  • 举报
回复
codelover 2003-12-15
就是一个const型的指向整数的指针。
  • 打赏
  • 举报
回复
AllanJD 2003-12-15
简单的理解就是——绑定,给指针变量取了一个别名,
说复杂了不好,简单的就是:
你有一个中文名字和一个英文名字,叫任意一个你都会答应。
呵呵,^_^
  • 打赏
  • 举报
回复
step_by_step 2003-12-15
指针的引用,这个指针的自身的值不能够被修改
  • 打赏
  • 举报
回复
zblee 2003-12-14
不同意lishubo888的观点,不能再指向其它变量了
  • 打赏
  • 举报
回复
kaphoon 2003-12-14
它是const指针,是保护了实参不被修改,但是要修改还是可以的,大家都知道,
int* const& max(int* const& a , int* const& b)
{
static int i ;
*a = i;

return *a > *b ? a : b;
}

其实,难理解的是,为什么要加&,这&肯定是引用,非取地址符。
在TC++PL中,T&的初始化必须是一个类型T的左值,而对const T&的初始化不必是一个左值甚至可以不是类型T。还一个原因是在变量引用的情况下引进临时量容易出错,对变量的赋值将变为对(即将消失的)临时量
赋值,而对常量引用的赋值不会有这类问题。
  • 打赏
  • 举报
回复
lishubo888 2003-12-13
部分同意danielhf(睡不着)的观点,a是一个int类型指针常量(注意不是常量指针)的引用。但是并不是表示该指针不能指向其它变量,该指针可以指向其它变量,而是a本身不能被改变,不能被赋值。
  • 打赏
  • 举报
回复
dft2000 2003-12-13
a是一个int*类型的常引用。其余同楼上
  • 打赏
  • 举报
回复
danielhf 2003-12-12
这个类型是一个指针的引用,这个指针是const的,表示它不能再指向其它变量。
  • 打赏
  • 举报
回复
fierygnu 2003-12-12
这样试一下就明白了:
int* const& max(int* const& a , int* const& b)
{
static int i;
a = &i; //编译器会告诉你a不能赋值,这样相当于保护了实参不会被函数内部修改
return *a > *b ? a : b;
}
  • 打赏
  • 举报
回复
layman2008 2003-12-12
*&a 其实就是a了

主要是要加个const来限定地址不能改变
  • 打赏
  • 举报
回复
相关推荐
发帖
工具平台和程序库
加入

2.4w+

社区成员

C/C++ 工具平台和程序库
申请成为版主
帖子事件
创建了帖子
2003-12-12 02:56
社区公告
暂无公告