在C中,取消引用和获取索引零是否执行相同的操作?

前端之家收集整理的这篇文章主要介绍了在C中,取消引用和获取索引零是否执行相同的操作?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我刚试过这段代码
int i = 33;
int * pi = &i;
cout << "i: " << *pi << endl;
cout << "i: " << pi[0] << endl;

两条线都返回同样的东西.

本质上,如果我得到任何指针的索引零,我将在指针的位置获得正确类型的值.与解除引用不是一回事吗?

每次在C中取消引用指针时,不会得到索引零也有效吗?我并不是说任何人都应该这样做,但我认为它会起作用.不是吗?

解决方法

忽略重载运算符,有一种情况存在差异,并且这是 DR1213之后的数组rvalues:
using arr = int[2];
arr&& f();
int&& b = *f(); // error,*f() is an lvalue,doesn't bind to int&&
int&& c = f()[0]; // OK,subscript applied to array rvalue results in an xvalue

但是,我不知道任何实现该解决方案的编译器.但最终应该实施.

猜你在找的C&C++相关文章