0

私は C++ が初めてで、常に多くの構文に遭遇しています..しばらくの間、これに対する具体的な答えを見つけることができませんでした。このコードを実行しようとしています:

void test(char &testChar){
    char B[3] = {"BB"};
    testChar = B;
}

int main(int argc, const char * argv[])
{
    char A[3] = {"AB"};
    test(A);
    std::cout << A;

    return 0;
}

AVariableを関数に渡し、その関数で の内容を local variable の内容testに置き換えてから、それを出力したいと考えています。これはどのように行うべきですか?AB

4

4 に答える 4

1

配列への参照はこれでなければなりません

void test(char (&testChar)[3]){
 // code
}

しかし、テスト関数のtestChar = B;式が間違っています。明示的に文字列コピーする必要があります (C ++では 2 番目の参照はポインターのように変更されません)。

編集:@ChristianSjöstedtがコメントしたように。

Python は、変数の型と値を変更できる「動的型付き言語」です。C++ のように変数の型を宣言すると、変数の型は変更されません。

 i = 10         # reference to int 
 i = "name"     # reference to str

これは Python では可能ですが、C++ (および C) では不可能です。

C/C++ は静的言語であり、「静的に型付けされた言語」を意味します。たとえば、変数の型を変更したり、コンパイル時に静的に定義したりすることはできません。

int i = 10;

iin int は char にすることができます。

動的型言語と静的型言語

于 2013-04-10T10:08:35.630 に答える
1

「C++ で配列参照を渡す」

配列への参照を関数に渡し、その配列の要素を別の配列に格納されている要素に設定すると仮定すると、std::copy配列は代入できないため、 を使用できます。配列のサイズをハンドルするには、テンプレート関数を使用することをお勧めします。

template <size_t N>
test( char (&testChar)[N] )
{
  char B[N] = {"BB"};
  stc::copy(B, B+N, testChar);
}

std::arrayただし、コピー可能で割り当て可能なを使用することをお勧めします。

template <size_t N>
test(std::array<char,N>& testarray; )
{
  std::array<char, N> B = {"BB"};
  teasArray = B;
}
于 2013-04-10T10:08:57.283 に答える
0

std::array固定サイズの配列またはstd::vector動的 (可変長)配列のいずれかに使用します。

于 2013-04-10T10:12:45.270 に答える
0

これはおそらくあなたが探しているコードです

#include <string.h>

void test(char *testChar){
    char B[3] = {"BB"};
    strcpy(testChar, B);
}

int main(int argc, const char * argv[])
{
    char A[3] = {"AB"};
    test(A);
    std::cout << A;

    return 0;
}

しかし、このようなコードが悪い考えである理由はさまざまです。文字列操作を行いたい場合はstd::string、C++ の配列とポインターという恐ろしい混乱に陥るのではなく、クラスから始める必要があります。

于 2013-04-10T10:19:25.820 に答える