[英]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"));
但是,這樣做時會出現錯誤。
有什么方法可以將“內容"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”將永遠不會正確更改/更改字符串的內容,因此請將該函數設置為
int somefunc(const char* ptr)
{
const char* base=ptr;
while(*(ptr++));
return (ptr-base);
}
int main()
{
printf("%d",somefunc("HELLO"));
return 0;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.