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

How do I pass an anonymous string literal to a function?

因为字符串文字可以像

一样被初始化
char myString [] = "somestring";

能够使用像

这样的函数似乎合乎逻辑
int stringLength ( char * str )
{
   char * c2 = str;
   while (*c2++);
   return (c2-str);
}

并称其为

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

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

有没有什么方法可以 "cast" "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);
}

你知道你的函数 "stringLength" 永远不会 mutate/change 字符串的内容正确所以使该函数如此

int somefunc(const char* ptr)
{
    const char* base=ptr;
    while(*(ptr++));
    return (ptr-base);
}

int main()
{
    printf("%d",somefunc("HELLO"));
    return 0;
}