为了避免在更改数组大小时悄然破坏,我建议
std::copy(a, a + sizeof(a)/sizeof(a[0]), b);
。更好的是,将sizeof()
垃圾包裹在一个宏 - 甚至是更好的人中,改为使用函数模板:template <typename T, size_t N> size_t size((T&)[N]) { return N; }
- j_random_hacker 12年8月8日在7:29左右
当我今天早上看Q&amp; A时,我发现了这个评论(有4个赞成票)。我是C ++的新手。 a+sizeof(a[0])
在这里意味着什么,我认为sizeof(a[0])
将返回4代表一个int内存字节?非常感谢提前!!。
答案 0 :(得分:3)
这很简单:
sizeof(a)/sizeof(a[0])
与您选择的元素无关(即 n
或0
)
答案 1 :(得分:0)
如果a
是一个数组,则sizeof(a)/sizeof(a[0])
是a
中的元素数量。它是每个元素大小的整个数组的大小。
因此,如果a
是一个数组,则a + sizeof(a)/sizeof(a[0])
是指向数组末尾的指针。