No.1
- 回答日時:
Cならば
int *b=(int *)malloc(sizeof(int)*hikisuu1);
C++ならば
int *b=new int[hikisuu1];
C++でSTLを使うなら
vector<int> b(kikisuu1);
と言う感じです。あとは int b[hikisuu1]としたときと同じように使えます。
上2つは 関数を抜けるときに free , deleteをしないとメモリリークが起きます。
ご注意を。
No.2
- 回答日時:
静的な配列割り当てでは、長さは定数(アセンブラを通すときに決定している値)である
必要があります。
ここでは、動的な割り当てを行います。Cでは、もっぱら、malloc関数を使います。
題と同じ変数名を用いると、
int *b;
b= (int*)malloc( sizeof(int)* hikisuu1);
(処理)
free(b);
と、静的割り当てと異なり、配列の使用の必要が無くなれば、free関数で
解放する必要があります。
No.3
- 回答日時:
通常の配列の要素数として引数を使用することは出来ません。
配列の要素数は定数でなければならないからです。
従って実現する為には他の手段が必要になります。
例えば以下の様にです。
int a (int hikisuu1, int hikisuu2){
int *b;
b=(int*)malloc(sizeof(int) * hikisuu1);
・
・
・
return 0;
}
このように動的なエリアを確保する様にするのが一つの解決策だと思います。
尚、何を返却するのか判りませんでしたので、とりあえず0としました。
また、hikisuu2も未使用です。
No.4
- 回答日時:
No.3の回答者です。
他の方の仰っている様にfree()が必要ですね。
私のコードの場合、returnの前に、
free(b);
が必要でした。
バグの元ですね。(^_^;
失礼しました。
No.5ベストアンサー
- 回答日時:
mallocを使用してもよいのですが、
配列の値を全て 0初期化しておきたい場合もあります。
そういった場合は、
int a (int hikisuu1, int hikisuu2){
int *b;
b = (int*)calloc(hikisuu1, sizeof(int));
if(b == NULL) {
/* メモリが割り当てられなかった場合の処理 */
}
/* メモリが割り当てられた場合の処理 */
free(b);
return 0;
}
というように、callocを使用します。
また、mallocにしろ callocにしろ、メモリを動的に取得するため、
メモリが割り当てられたかどうかの確認をやっておいたほうが無難です。
参考URL:http://www.bohyoh.com/CandCPP/C/Library/calloc.h …
No.6
- 回答日時:
どうでもよい補足です。
私が初めてmallocを知ったときの疑問点です。
既に他のかたがおっしゃってるように
int *b=(int *)malloc(sizeof(int)*hikisuu1);
で問題は解決です。b[3],b[8]とかで配列と同じようにアクセスできます。
(int *)の意味はキャストの意味です。
malloc という関数の戻り値がvoid*型なので
int *bに代入するためにキャストが必要なんです。
もう知っていたらごめんなさいです。。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語 共用体について コマンドライン引数で値を2つ入力したときに、argv[2]の値をUNI u1 4 2022/04/25 20:34
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- C言語・C++・C# 関数ポインタの高速化のメリット 7 2023/05/05 20:15
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# 至急教えてください! プログラミングの問題です! お願いします! 出力2と全く同じ出力をするように、 2 2022/06/22 23:10
- C言語・C++・C# ポインタの型変換、どうやるんでしたっけ? 2 2022/03/28 11:00
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# 10人分の生徒の英語の点数{32,34,41,38,40,26,14,46,42,50} と数学の点 2 2022/05/26 21:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ArduinoのジャイロモジュールMP...
-
C言語をコンパイルするとコンピ...
-
mallocについて
-
gccを行ってもexeファイルが生...
-
c言語
-
C言語 列挙型(enum型)変数について
-
卒業研究でよく分からないとこ...
-
C言語初心者 構造体 課題について
-
C++でデスクトップGUIアプリ開...
-
C言語初心者 構造体 課題について
-
win10で、正確な待ち時間の作り方
-
[C言語]fputsとfprintfの違い
-
VisualStudio2022でC言語プログ...
-
大量のデータを読み込んで表示...
-
C言語初心者 ポインタについて...
-
あなたは、Excelはどうやって学...
-
C言語初心者です、、、お助けく...
-
システムエンジニアの適正について
-
Stuck
-
Notepad++の関数リスト表示の変...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
gccを行ってもexeファイルが生...
-
あなたは、Excelはどうやって学...
-
WindowsのCapsLock(キャップス...
-
質問失礼します。 プログラム言...
-
double型が正常に認識されてい...
-
Notepad++の関数リスト表示でC...
-
どちのほうがすきですか?
-
Stuck
-
Notepad++の関数リスト表示の変...
-
ArduinoでMouse関数を使用して...
-
C言語の関数と配列に関する質問
-
C言語って古いですか?
-
Linuxでの開発環境構築や設定の...
-
Bitcoin、BTCはブロックチェー...
-
C++6.0でのresource.hについて
-
MACで動く実行ファイルをWindow...
-
C言語 列挙型(enum型)変数について
-
c言語
-
大量のデータを読み込んで表示...
-
こんなことてしますか??
おすすめ情報