如何將 char 指標 ( char*) 傳遞給函式func()?
#include <iostream>
using namespace std;
void func(char *var)
{
cout << var;
}
int main()
{
char* test = "Hello World";
func(test);
}
編譯器說:
初始化:const char[12] 無法轉換為 char *
uj5u.com熱心網友回復:
字串文字是const char[N]只讀記憶體中的陣列(其中N是文字中的字符數,加上 1 表示空終止符,因此在您的情況下11 1=12)。您不能將char*指標(即指向非const資料的指標)指向字串文字,因為這將允許更改只讀資料的可能性,這是未定義的行為。
只需將指標型別更改為const char*(即指向const資料的指標),例如。
#include <iostream>
using namespace std;
void func(const char *var)
{
cout << var;
}
int main()
{
const char* test = "Hello World";
func(test);
}
否則,正如您所說,您無法控制函式宣告,那么如果您真的想將字串文字傳遞給char*指標,則應先將字符復制到單獨的可寫char[]緩沖區中,然后再指向該緩沖區,例如:
#include <iostream>
using namespace std;
void func(char *var)
{
cout << var;
}
int main()
{
char test[] = "Hello World";
func(test);
}
或者,如果您確定該函式永遠不會修改字符,您可以const使用const_cast(盡管強烈不建議這樣做,但為了完整性我將其包括在內),例如:
#include <iostream>
using namespace std;
void func(char *var)
{
cout << var;
}
int main()
{
char* test = const_cast<char*>("Hello World");
func(test);
/* alternatively:
const char* test = "Hello World";
func(const_cast<char*>(test));
*/
}
uj5u.com熱心網友回復:
此代碼將列印字串“Hello World”
void func(char *var)
{
for( ;*var!='\0'; var ) { //!= from null terminator
cout<<*var;
}
}
int main()
{
char test[] = "Hello World";
func(test);
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/430408.html
標籤:C
上一篇:0xC0000005:訪問沖突讀取位置0x005EF9E4
下一篇:問題嘗試根據小時動態顏色代碼行
