c - sizeof 参数

标签 c arrays pointers sizeof

即使有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/

相关文章:

c - C 中的数组是指针的语法糖吗?

c - 是否可以将字符串从指针数组转换为变量名?

c - 二分查找算法的平均性能?

c - 'char' 之前的预期主表达式错误

c - 扫描两个整数(如 scanf ("%d\n %d")时使用\n 有什么用?

python - 使用 [ :] syntax 的 numpy 维度问题

ios - 如何遍历数组并根据字符串值删除项目

java - 已经排序的数组

c++ - 为什么这个指向常量指针的指针赋值是非法的?

c++ - 如何创建一个指向指针数组的指针来构造?