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

时间:2015-04-28 03:59:42

标签: 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));    

或者我还应该做些什么呢?

2 个答案:

答案 0 :(得分:2)

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);
}

答案 1 :(得分:1)

你知道你的函数“stringLength”永远不会改变/改变字符串的内容,所以使这个函数如此

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

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