小编chr*_*umb的帖子

C - 地址运算符中的函数指针"不必要"

在C中使用qsort我们传递比较函数,例如

int cmp(const void*, const void*);
Run Code Online (Sandbox Code Playgroud)

qsort的protoype期望一个int(*)(const void*,const void*)所以我们调用:

qsort(..., cmp);
Run Code Online (Sandbox Code Playgroud)

但同样有效的是:

qsort(..., &cmp);
Run Code Online (Sandbox Code Playgroud)

如果我们在C++中传入静态成员函数,这就是我们必须要做的.Kernighan&Ritchie(第2版,5.11"Pointers To Functions"p119)声明"因为[cmp]已知是一个函数,所以&运算符不是必需的,就像在数组名称之前不需要它一样. "

是否有人对此感到有点不舒服(特别是关于型号安全性)?

c c++ function-pointers

7
推荐指数
3
解决办法
3374
查看次数

C++ std :: string构造函数

任何有关这方面的想法将不胜感激:

std::string s1 = "hello";
std::string s2 = std::string(s1);
Run Code Online (Sandbox Code Playgroud)

我现在期望这两个字符串是独立的,即我可以将",world"附加到s2,而s1仍然会读取"hello".这是我在Windows和Linux上发现的但是在HP_UX机器上运行代码似乎s2和s1是相同的字符串,所以修改s2会改变s1.

这听起来绝对疯狂,有人见过类似的东西吗?

c++ hp-ux stdstring

3
推荐指数
1
解决办法
3837
查看次数

标签 统计

c++ ×2

c ×1

function-pointers ×1

hp-ux ×1

stdstring ×1