パラメータとしてを受け取る関数を記述しようとしていますが、const char *
この種のデータを関数に渡す方法がわかりません。機能がある場合:
void tokenize(const char * c) { }
そして、バックスラッシュなどのハードコードされた値でこの関数を呼び出したいのですが、これにアプローチする最良の方法は何ですか? ハードコードされた値を に変換するにはどうすればよいconst char *
ですか?
文字列リテラルは、const char *
パラメーターの代わりに使用することは完全に合法です。
tokenize("\\");
よりわかりやすい例は、その文字列へのポインターを格納し、そのポインターを渡すことです。
const char *token = "\\";
tokenize(token);
char *
ただし、文字列リテラルは、コンパイラが許可している場合でも、 と互換性がありません。これは、文字列リテラルが格納される方法に関係しています。通常、文字列リテラルはメモリの読み取り専用領域にあり、それらに書き込もうとすると、未定義の動作が発生します。ほとんどの場合、何らかの保護違反が発生します。
文字列リテラル like"\\"
を使用して、関数に引数として渡すことができます。