気ままなタンス*プログラミングなどのノートブック

プログラミングやRPGツクール、DTM、VOCALOIDについてのんびり書きます。

【C++】関数とOUTパラメータのメモ(自分用)

きっかけ

  • プログラマの考え方がおもしろいほどわかる本を読んでおり、その中でC++について述べられている
  • Pythonの実装が気になるのでC/C++を改めてやってみようかと?どこの地点を目標とするかはまだ決まってない

メモ

  • 関数呼び出しで参照渡しを行う場合は、&(アンパサンド)をつける
    • &がついていた場合、基本的にはOUTパラメータ
    • 関数の中でそのパラメータが書き変わらない場合、constをつける(ソースが少ない場合や自分だけが作る場合は良いかもしれないが、大量になってくると無いと困りそう)
  • new演算子もしくはmalloc関数では、ヒープ領域にメモリブロックを確保する
#include <iostream>

using std::cout;
// アンパサンド(&)でOUTパラメータであることを宣言
void expand(char *& s) {
    // sの中身を表示
    cout << *s << '\n';
    // sのアドレスを表示
    cout << &s << '\n';
    char *new_s = new char[3];
    strcpy_s(new_s, sizeof(new_s), "oop");

    cout << new_s;

    //delete[] &s;
    s = new_s;
}

int main(int argc, char *argv) {
    char *hoge_s = new char[2];
    strcpy_s(hoge_s, sizeof(hoge_s), "ab");

    cout << hoge_s; // ab

    expand(hoge_s);

    cout << hoge_s; // oop

    getchar();

}