Listing. 1: 動的メモリと配列と関数1
- theMain.cpp
#include <iostream> using std::cout; using std::endl; using std::cin; int main() { int* pArr=nullptr;//ヌルポインタ 何も指さないポインタ //ポインタ変数 アドレスを指す変数(アドレスは参照するもの) pArr = new int[5]; for (int i = 0; i < 5; i++) *(pArr + i) = i; //*pArr = 100; //*をつけるとメモリの中身、という意味になる for (int i = 0; i < 5; i++) { cout << pArr + i << " : " << *(pArr + i) << endl; cout << &(pArr[i]) << " : " << pArr[i] << endl; } //ポインタ変数名+数字で、何個目のアドレスかを指す //deleteもじぶんでやる //&(pArr[0]) => pArr + 0 //int num; //cin >> num; //pArr = new int[num]; //for (int i = 0; i < num; i++) //{ // pArr[i] = i; //} //for (int i = 0; i < num; i++) //{ // cout << pArr[i] << " "; //} //delete[] pArr; return 0; } //①まず1個ポインタ用意してメモリとって、値を入れて、アドレスと中身を表示 //②入力した数のメモリを取って、値を入れて、アドレスと中身を表示
Listing. 2: 動的メモリと配列と関数2
- theMain.cpp
#include <iostream> using std::cout; using std::endl; using std::cin; const int ARR_NUM = 20; void InitArr(int* arr, int _num); void InitA(int* _a); int main() { int arr[ARR_NUM] = { 12,7,20,4,9,11,5,19,6,14,16,17,1,13,10,2,15,8,18,3 }; int a = 10; //InitArr(arr[]); //arr[0]~arr[9]までを初期化してくれる関数 //InitArr(arr[ARR_NUM]); //InitA(&a); //cout << "a=" << a << endl; //InitA(&(arr[3])); //先頭アドレス(=配列名)と配列数を渡すと関数内で配列をいじれる! InitArr(arr, ARR_NUM); for (int i = 0; i < ARR_NUM; i++) cout << arr[i] << " "; return 0; } void InitA(int* _a) { *_a = 0; cout << "_a= " << *_a << endl; } /// <summary> /// 渡されたintの配列を初期化する関数 /// </summary> /// <param name="_arr">配列の先頭のアドレス</param> /// <param name="_num">配列の要素数</param> void InitArr(int* _arr, int _num) { for (int i = 0; i < _num; i++) { _arr[i] = i; } } //void sortArr(? ? ? はいれつと、int はいれつすう、bool isIncrease); //isIncrease == true 昇順 //== false 降順 で 渡された配列をソートする関数をつくれー void sortArr(int* pArr, int num, bool isIncrease) { for (int i = 0; i < num; i++) { int idx = i; for (int j = i; j < num; j++) { if (isIncrease) { if (pArr[i] > pArr[j]) { idx = j; std::swap(pArr[i], pArr[j]); } } else { if (pArr[i] < pArr[j]) { idx = j; std::swap(pArr[i], pArr[j]); } } } } }