28

関数に文字列を渡すときに、時々使用します

char *functionname(char *name[256])

また、ポインターなしで使用することもあります (例:

char functionname(char name[256])

私の質問は、いつポインターを使用する必要があるのですか? 多くの場合、ポインターを使用せずにプログラムを作成して動作しますが、動作しない場合もあります。

4

3 に答える 3

54

関数に 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 の配列引数の詳細については、この質問も参照してください。

于 2013-06-16T09:44:01.003 に答える
2

あなたが書くつもりだったと仮定して

char *functionname(char *string[256])

ここでは、256 個のポインターの配列をchar引数として取り、char へのポインターを返す関数を宣言しています。一方、ここでは、

char functionname(char string[256])

引数として256charの配列を取り、 を返す関数を宣言していますchar

つまり、最初の関数は文字列の配列を受け取って文字列を返し、2 番目の関数は文字列を受け取って文字を返します。

于 2013-06-16T09:42:07.957 に答える