関数に文字列を渡すときに、時々使用します
char *functionname(char *name[256])
また、ポインターなしで使用することもあります (例:
char functionname(char name[256])
私の質問は、いつポインターを使用する必要があるのですか? 多くの場合、ポインターを使用せずにプログラムを作成して動作しますが、動作しない場合もあります。
関数に C 文字列を渡す際に受け入れられている規則は、ポインターを使用することです。
void function(char* name)
関数が文字列を変更するときは、長さも渡す必要があります。
void function(char* name, size_t name_length)
最初の例:
char *functionname(char *name[256])
まったく必要のない文字列へのポインターの配列を渡します。
2番目の例:
char functionname(char name[256])
文字の配列を渡します。ここでの配列のサイズは問題ではなく、パラメーターはとにかくポインターに減衰するため、これは次と同等です。
char functionname(char *name)
C の配列引数の詳細については、この質問も参照してください。
あなたが書くつもりだったと仮定して
char *functionname(char *string[256])
ここでは、256 個のポインターの配列をchar
引数として取り、char へのポインターを返す関数を宣言しています。一方、ここでは、
char functionname(char string[256])
引数として256char
の配列を取り、 を返す関数を宣言していますchar
。
つまり、最初の関数は文字列の配列を受け取って文字列を返し、2 番目の関数は文字列を受け取って文字を返します。