- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
将指向数组第一个元素的指针转换为指向整个数组的指针是否合法?
template<typename T, size_t N>
void whatever(T(&)[N])
{
std::cout << N << '\n';
}
int main()
{
int a[10];
int * p = a;
whatever(*(int(*)[10])(p)); // <-- legal?
}
这会在我的编译器上打印 10,但我不确定 C++ 标准是否允许它。
最佳答案
不,这是不合法的(因为它是未定义的行为)。指向整个数组的指针是 &a
而不是 p
。基本上,您是在将一个指针指向另一个指针。该标准描述了所有允许的转换,而这个不在其中。
关于c++ - 我可以逆转数组到指针衰减的过程吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8635549/
liwen01 2024.08.18 前言 无论是在产品开发还是在日常生活中,在使用无线网络的时候,都会经常遇到一些信号不好的问题,也会产生不少疑问: 为什么我们在高速移动的高铁上网络会变
我正在使用 Kinect 获取每个关节的位置和方向,然后将它们发送到 Unity。我注意到值有很多“跳跃”或波动,例如,有时我不移动我的手,而在 Unity 中它会旋转 180 度。 我想要的是一个平
在下面的示例中, #include #include //okay: // template decltype(auto) runner(T&& t, F f) { return f(st
出于某种原因,即使我设置了衰减因子,我的学习率似乎也没有改变。我添加了一个回调来查看学习率,它似乎在每个纪元之后都是一样的。为什么没有变化 class LearningRatePrinter(Call
考虑下面的代码: #include #include using namespace std; template void Test2(future f, Work w) { async([
我是一名优秀的程序员,十分优秀!