簡體   English   中英

如何將匿名字符串文字傳遞給函數?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM