即使有int foo(char str[]);
它将接受初始化为字符串文字 sizeof 的数组,这是行不通的。我被要求做类似 strlen 的事情,我想要采取的方法是在整个字符串上使用 sizeof,然后根据某个不常见的标记进行相应的减去。减少了一些操作,而不是简单地计算所有内容。
所以,是的,我尝试在数组上使用解引用运算符(也尝试了指针),但最终只得到第一个数组元素。
如何通过 sizeof 传递参数。我想按值传递可能会起作用,但我真的不知道这对于字符串是否可行。
最佳答案
int foo(char str[]);
will take in an array initialized to a string literal
那不是它的作用。这里的 char str[]
与 char* str
相同。当数组类型作为参数类型时,会转换为对应的指针类型。
如果您需要函数中指向数组的大小,您要么需要使用另一个参数自己传递大小,要么需要在函数中自己计算它(如果可能的话)(例如,在使用 C 字符串的场景中,您可以轻松找到字符串的结尾)。
关于c - sizeof 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7471929/