为函数提供最大字符串长度

时间:2015-10-01 08:23:58

标签: c++ string

当定义一个char数组作为其参数之一的函数时,是否建议始终传递最大数组长度以及额外参数?例如:

int somefunction(char* inputarray, int maxsizeofarray)

3 个答案:

答案 0 :(得分:4)

C风格的字符串通常由\0字符终止。大多数(如果不是全部)标准库中的函数,例如strcpystrcmp期望(和荣誉!)这个约定。我建议你写的任何新函数都遵循相同的约定。

话虽如此,在C ++中(与C相反),我根本不会使用char*。相反,我会使用标准std::string类。

答案 1 :(得分:1)

完全取决于函数。例如,当您从最后一个元素到第一个元素遍历char array时,在这种情况下,传递大小是明智的。但仅限C语言。在C ++中,您有std::string

答案 2 :(得分:1)

当函数写入数组时传递数组大小是正常的,或者当函数确定其大小时有问题(因为它不一定遵循诸如具有NUL终结符的约定)。例如:

guard let