如何将匿名字符串文字传递给函数?
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;
}
因为字符串文字可以像
一样被初始化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;
}