- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
这个问题来自这个:
c++ pass array to function question
但由于 OP 接受了答案,我想现在没有人会阅读它。
我在 g++ 上试过这段代码。似乎数组在传递给此函数时不会衰减为指针(该函数返回正确的结果):
#include <iostream>
template <typename T>
std::size_t size_of_array (T const & array)
{
return sizeof (array) / sizeof (*array);
}
int main ()
{
int a [5];
std::cout << size_of_array (a) << '\n';
}
另一个用户 (sharptooth) 说他在关闭内联的 VC++ 10 上有相同的行为。
谁能解释一下?谢谢。
最佳答案
数组衰减不仅会发生——它只会在程序没有它就无法编译时发生。当您通过引用传递数组时,根本不需要衰减。
注意函数模板也可以不划分丑陋的sizeof
表达式来写:
template <typename T, std::size_t N>
std::size_t size_of_array(T (&array)[N])
{
return N;
}
当客户端调用 size_of_array
时,T
和 N
由模板机制自动推导。
关于c++ - 如果通过模板函数中的 const 引用传递,数组不会衰减为指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7177221/
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([
我是一名优秀的程序员,十分优秀!