動的配列の関数への渡し方

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
マルコ

動的配列の関数への渡し方

#1

投稿記事 by マルコ » 4ヶ月前

C++の質問になってしまいますが。。。

Int main()
{

int count = 0;
int* Array;

cin>> count;
Array = new int[count];

//配列にデータをいれる関数
Hoge(Array, count);

//配列の中身を出力する関数
Hoge2(Array, count);

return 1;
}


これで最後出力する際に配列の中身が出力されないのですが、関数の引数、動的配列の生成等がおかしいのでしょうか?
どなたかわかる方いたらご教授ください。

box
記事: 1744
登録日時: 9年前

Re: 動的配列の関数への渡し方

#2

投稿記事 by box » 4ヶ月前

main関数だけ見せられましてもね…。
ここはどうしても
Hoge
Hoge2
の中身を見たいところです。

仮に質問者さんが回答しようとする立場で、今回の質問を見たとき、
「おいおい。肝心なところを見せろよ」って思いませんか?
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

Math

Re: 動的配列の関数への渡し方

#3

投稿記事 by Math » 4ヶ月前

>「おいおい。肝心なところを見せろよ」って思いませんか?

思いませんよ。(^^; 質問者様はなんでも質問くださいね。 大歓迎です。


私はWindows10、VS2019Community を使用しております。

下記のようにすれば表示されますよ。(^^;

main.cpp

コード:

#include <iostream>
using namespace std;
int Hoge(int*, int);
int Hoge2(int*, int);
int main()
{
	int count;
	int* Array;
	cout << "input count:";
	cin >> count;
	cout << count;
	Array = new int[count];

	//配列にデータをいれる関数
	Hoge(Array, count);

	//配列の中身を出力する関数
	Hoge2(Array, count);

	return 0;
}

int Hoge(int* A, int n)
{
	for (int i = 0; i < n; i++) {
		A[i] = i;
	}
	cout << "Hoge end!" << endl;
	return 0;
}
int Hoge2(int* A, int n)
{
	for (int i = 0; i < n; i++) {
		cout << A[i] << endl;
	}
	return 0;
}
VS2019 ビルド

コード:

1>------ すべてのリビルド開始: プロジェクト:Proj_001, 構成: Debug x64 ------
1>main.cpp
1>Proj_001.vcxproj -> C:\19\19c\c++2019\Proj_001\x64\Debug\Proj_001.exe
========== すべてリビルド: 1 正常終了、0 失敗、0 スキップ ==========
実行結果

コード:

input count:10
10Hoge end!
0
1
2
3
4
5
6
7
8
9

C:\19\19c\c++2019\Proj_001\x64\Debug\Proj_001.exe (プロセス 1064) は、コード 1 を伴って終了しました。
このウィンドウを閉じるには、任意のキーを押してください . . .

Math

Re: 動的配列の関数への渡し方

#4

投稿記事 by Math » 4ヶ月前

#2へ ネガティブ・シンキングになってはいけない。ポジティブ・シンキングに変えようよ・
「為せば成る、為さねば成らぬ何事も、成らぬは人の為さぬなりけり」 米沢藩主の上杉鷹山 の教訓
こんような初心者のかたの質問者様には簡単に答えれるでしょう!質問者様を責めるようないいかたは良くありません。

Math

Re: 動的配列の関数への渡し方

#5

投稿記事 by Math » 4ヶ月前

ここを参照してください
https://brain.cc.kogakuin.ac.jp/~kanama ... 11-02.html

今回はプログラム終了じに自動的に配列が解放されますが

プログラムによっては関数 が終了される時に、delete[] により配列が解放されなかったとすると、
ヒープ領域上の配列は、誰にも参照されない (使われない) ままプログラム終了まで残り続けることになってしまう。
このような事態のことをメモリリークと言い、C/C++ のプログラミングでは避けねばならない事態である
という言ことに注意が必要になりますね。

マルコ

Re: 動的配列の関数への渡し方

#6

投稿記事 by マルコ » 4ヶ月前

皆様ありがとうございます!
明日試してみます!

返信

“C言語何でも質問掲示板” へ戻る