パラメータ(char * s)の意味を教えてください。文字の配列を受け入れることができますか、それともポインタだけを受け入れることができますか。文字列の配列を受け入れ、文字列の長さに応じて動的にメモリを割り当てる方法も教えてください。
4 に答える
技術的には、これは単一の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
型と参照型。
文字列の配列を受け入れるようにするにはどうすればよいですか
C++ ソリューション:
void foo(std::vector<std::string> const& strings);
C ソリューション:
void foo(const char **strings);
char* s は、s が文字が格納されているメモリ位置へのポインタであることを意味します。はい、次の例のように、文字の配列を受け入れます。
void func(char* s)
{
}
int main()
{
char arr[10] = {0};
func(arr);
return 0;
}
文字列の配列を受け付けるにはどうすればよいか、文字列でわかることを教えてください。std::string クラスですか、それとも char* ですか?
char* s
は、単一の変数または の配列(char ポインターとして知られている)を指しs
ていることを意味します。また、文字列は基本的に の配列です。char
char
char
char ポインタや char の配列を受け入れるメソッドに char 配列を渡すには、次のようにします。
void foo(const char** string) {
}
int main() {
char[] s = "My String";
foo(&s);
}