0

パラメータ(char * s)の意味を教えてください。文字の配列を受け入れることができますか、それともポインタだけを受け入れることができますか。文字列の配列を受け入れ、文字列の長さに応じて動的にメモリを割り当てる方法も教えてください。

4

4 に答える 4

2

技術的には、これは単一のchar変数へのポインターです。ただし、値の配列の最初の要素へのポインタにすることもできcharます。s++ポインタをインクリメントおよびデクリメントして、文字列(または)を移動することができます。ただしs--、両端を超えないようにする必要があります。

ポインタを変更せずに、などのインデックスを使用することもできますs[14] = 'a';

配列へのポインタとして使用することcharは、通常、Cスタイルの文字列を処理する場合に当てはまります。

さらに、char配列は、関数への受け渡しなど、多くの状況で最初の要素へのポインターに減衰します。

void fn (char *s) {
    printf ("%s\n", s);
}
:
char xyz[50];
strcpy (xyz, "Hello");
fn (xyz);

Cの文字列の配列にはchar **、へのポインタとポインタの配列を使用しcharます。

C ++の場合、おそらくcharポインター(文字列の場合)とポインターの受け渡しを完全に捨てる必要があります。使用std::string型と参照型。

于 2011-03-15T07:27:49.223 に答える
0

文字列の配列を受け入れるようにするにはどうすればよいですか

C++ ソリューション:

void foo(std::vector<std::string> const& strings);

C ソリューション:

void foo(const char **strings);
于 2011-03-15T07:29:53.777 に答える
0

char* s は、s が文字が格納されているメモリ位置へのポインタであることを意味します。はい、次の例のように、文字の配列を受け入れます。

void func(char* s)
{
}

int main()
{
  char arr[10] = {0};

  func(arr);

  return 0;
}

文字列の配列を受け付けるにはどうすればよいか、文字列でわかることを教えてください。std::string クラスですか、それとも char* ですか?

于 2011-03-15T07:30:18.830 に答える
0

char* sは、単一の変数または の配列(char ポインターとして知られている)を指しsていることを意味します。また、文字列は基本的に の配列です。charcharchar

char ポインタや char の配列を受け入れるメソッドに char 配列を渡すには、次のようにします。

void foo(const char** string) {

}

int main() {
    char[] s = "My String";
    foo(&s);
}
于 2011-03-15T07:33:38.097 に答える