0

char*C++ で文字列をパラメーターとして受け取ることはできますか? もしそうなら、これはどのように機能しますか。

例:

myfunc("hello"); //call
myfunc(char * c)
{ ...
}

文字は文字列にどの程度正確に関連していますか?

4

2 に答える 2

2

リテラルの型は"hello"ですconst char[6]。これは、文字列用のスペースと NULL 終端バイトを含む文字の配列です。

C++ では、関数の引数を渡すときに別の型に変換できます。この場合、配列型はポインタ型 に変換されconst char *、ポインタは value を持つ最初の文字を参照します'h'

C++03 では への変換が許可されchar *、 が削除されましconstたが、実際に文字列を変更する動作は未定義でした。これは古い学校の C との互換性のために行われ、新しい C++11 標準では取り消されたため、この例は新しいコンパイラに合格しません。

ちなみに、C から継承された従来の考慮事項により、関数が代わりに として宣言されても違いはありませんmyfunc(char c[6])。の型はcそのままですchar *

于 2013-02-07T00:05:33.530 に答える
-1

あなたの例では期待どおりに機能しません。この方法で文字列を使用する(先頭の文字へのポインタ)は、文字列がnullで終了する場合にのみ機能します。これが古いc_strの仕組みです。最初の文字への参照がある場合は、終了文字「\0」が見つかるまで繰り返して文字列全体にアクセスできます。

于 2013-02-06T23:50:21.380 に答える