c - 如何将匿名字符串文字传递给函数?

标签 c string character-arrays

因为字符串文字可以像这样初始化

char myString [] = "somestring";

能够使用像这样的函数似乎合乎逻辑

int stringLength ( char * str )
{
   char * c2 = str;
   while (*c2++);
   return (c2-str);
}

然后像这样调用它

printf("%d",stringLength("somestring"));

但是,当我这样做时出现错误。

有没有什么方法可以将“something”“转换”成适合输入函数的东西,或者我是否总是使用额外的一行,比如

char str [] = "somestring";
printf("%d",stringLength(str));    

或者还有其他我应该一起做的事吗?

最佳答案

char myString [] = "somestring";

创建一个可修改的字符数组。

当你使用

printf("%d",stringLength("somestring"));

它类似于:

char const* temp = "somestring";
printf("%d",stringLength(temp));

这就是编译器不喜欢它的原因。

您可以更改函数以使用 char const* 作为参数,以便能够使用它。

int stringLength ( char const* str )
{
   char const* c2 = str;
   while (*c2++);
   return (c2-str);
}

关于c - 如何将匿名字符串文字传递给函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29910063/

相关文章:

c - 重新排列一个数组,使其与另一个数组相比达到最佳效果

python - 如何使用 Python 测试唯一字符串和重复字符串(不同大小写)

java - 通过将字符串拆分为条件子字符串来获取java数组

c - 在 C 中删除标点符号和大写

C: 为什么数组的元素需要通过内存地址扫描?

c - 为什么预处理器不使两个相邻的减号成为减量?

c - 优化计算组合并避免溢出

python - 对包含字符串文字的行进行标记

C中字符指针的澄清

c - 未定义的端口号作为输出 - UDP/C/Linux