動的メモリと配列と関数1
#include
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個ポインタ用意してメモリとって、値を入れて、アドレスと中身を表示
//②入力した数のメモリを取って、値を入れて、アドレスと中身を表示
動的メモリと配列と関数2
#include
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;
}
///
/// 渡されたintの配列を初期化する関数
///
/// 配列の先頭のアドレス
/// 配列の要素数
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]);
}
}
}
}
}