小编hgr*_*rev的帖子

引用数组和将数组作为函数中的参数有什么区别?

引用数组的函数之间有什么区别:

// reference to array
void f_(char (&t)[5]) {
    auto t2 = t;
}
Run Code Online (Sandbox Code Playgroud)

和简单的数组:

// just array
void f__(char t[5]) {
    auto t2 = t;
}
Run Code Online (Sandbox Code Playgroud)

作为参数?

调用代码为:

char cArray[] = "TEST";
f_(cArray);
f__(cArray);

char (&rcArr)[5] = cArray;
f_(rcArr);
f__(rcArr);
Run Code Online (Sandbox Code Playgroud)

在这两种情况下, t2都是char *,但在第一个函数中,我的VS2019显示函数内的t具有类型char(&t)[],而第二个函数内的t具有类型char *。

那么到底这些功能之间有什么实际区别吗?

c++ pass-by-reference implicit-conversion c++11

7
推荐指数
1
解决办法
382
查看次数

为什么动态分配的内存返回的大小与我实际尝试分配的大小不同?

我想在内存中的结构后面添加一个字符串。如何检查我是否动态分配了正确数量的字节?

例子:


const wchar_t* add_str = L"test string";

struct test_{
    wchar_t* name;
    size_t namelen;
} test;

void* ptest_void = malloc(sizeof(test) + wcslen(add_str)*sizeof(wchar_t));
// i cant dereference void*, hence, cant check sizeof(*ptest_void)

// then i try to get sizeof of a ptr which was cast to (test_*):
test_* ptest = (test_*)ptest_void;
size_t ptest_sz = sizeof(*ptest);
// ptest_sz has the size of _test struct, but without size of add_str...
free(ptest_void);

Run Code Online (Sandbox Code Playgroud)

c c++

0
推荐指数
1
解决办法
98
查看次数

标签 统计

c++ ×2

c ×1

c++11 ×1

implicit-conversion ×1

pass-by-reference ×1