当定义一个char数组作为其参数之一的函数时,是否建议始终传递最大数组长度以及额外参数?例如:
int somefunction(char* inputarray, int maxsizeofarray)
答案 0 :(得分:4)
C风格的字符串通常由\0
字符终止。大多数(如果不是全部)标准库中的函数,例如strcpy
或strcmp
期望(和荣誉!)这个约定。我建议你写的任何新函数都遵循相同的约定。
话虽如此,在C ++中(与C相反),我根本不会使用char*
。相反,我会使用标准std::string
类。
答案 1 :(得分:1)
完全取决于函数。例如,当您从最后一个元素到第一个元素遍历char array
时,在这种情况下,传递大小是明智的。但仅限C语言。在C ++中,您有std::string
。
答案 2 :(得分:1)
当函数写入数组时传递数组大小是正常的,或者当函数确定其大小时有问题(因为它不一定遵循诸如具有NUL终结符的约定)。例如:
guard let