所以我有一个 C++ 结构,它有一个静态数组作为成员,我想在构造函数中询问它的大小。正如我从这篇文章http://msdn.microsoft.com/en-us/library/4s7x1k91(VS.71).aspx中了解到的, sizeof 可以应用于静态数组以查找整个数组的大小(以字节为单位)数组,而不仅仅是它的类型。但是,当我sizeof()
对成员执行操作时,它给了我 4(指针的大小)而不是数组的大小。这是上下文(简单化):
struct A
{
char descirption[128];
int value;
A(const char desc[], int val)
{
size_t charsToCopy = std::min(sizeof(description), sizeof(desc));
memcpy(description, desc, charsToCopy);
value = val;
}
}
int main()
{
A instance("A description string", 1);
//now instance has a description string that says "A des" followed by garbage characters
}
那么如何获取成员 char 数组的大小呢?
编辑
当我在编译器中放置断点并检查这两个值时sizeof(description)
,sizeof(desc)
我看到sizeof(description) == 4
, 和sizeof(desc) == 21
. 因此我的困惑。因为我将字符串文字传递给构造函数,编译器似乎非常乐意告诉我传入的字符串的实际大小。如果我将它分配给某个地方的变量,可能就不是这样了,但现在我'我试图找出根本问题: sizeof( some-member-static-array ) 给了我一些(相对)毫无意义的东西。
sizeof 是否有可能因为它是一个字符数组而进行某种字符串长度测量?