2

パラメータとしてを受け取る関数を記述しようとしていますが、const char *この種のデータを関数に渡す方法がわかりません。機能がある場合:

void tokenize(const char * c) { }

そして、バックスラッシュなどのハードコードされた値でこの関数を呼び出したいのですが、これにアプローチする最良の方法は何ですか? ハードコードされた値を に変換するにはどうすればよいconst char *ですか?

4

2 に答える 2

5

文字列リテラルは、const char *パラメーターの代わりに使用することは完全に合法です。

tokenize("\\");

よりわかりやすい例は、その文字列へのポインターを格納し、そのポインターを渡すことです。

const char *token = "\\";
tokenize(token);

char *ただし、文字列リテラルは、コンパイラが許可している場合でも、 と互換性がありません。これは、文字列リテラルが格納される方法に関係しています。通常、文字列リテラルはメモリの読み取り専用領域にあり、それらに書き込もうとすると、未定義の動作が発生します。ほとんどの場合、何らかの保護違反が発生します。

于 2013-11-08T15:47:49.530 に答える
0

文字列リテラル like"\\"を使用して、関数に引数として渡すことができます。

于 2013-11-08T15:48:14.613 に答える