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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
3×3のラテン方陣をつくるプログ...
-
10進数からN進数に変換するプロ...
-
大量のデータを読み込んで表示...
-
C#,vb.netで業務用アプリ開発と...
-
プログラマーです。このDB設計...
-
0 == False はいいけど
-
インクリメント演算子のみを用...
-
ArduinoでMouse関数を使用して...
-
C言語 列挙型(enum型)変数について
-
VisualStudio2022でC言語プログ...
-
パイソン。If elseの挙動につい...
-
擬似コード 長さがmの配列でな...
-
UART通信の取説で,left floati...
-
あんまり考えたくないけど
-
CPUが16bitでも32bitOSでコンパ...
-
double型が正常に認識されてい...
-
c言語でイベントフラグを使った...
-
【C言語】全角文字の配列を、全...
-
C言語について。
-
C言語について。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
どうして+3
-
プログラミング言語についてc++...
-
今ってプログラミング言語は何...
-
2つほどお聞きしたいことがあり...
-
次の記述について
-
パソコン
-
バッチファイルで以下のような...
-
大量のデータを読み込んで表示...
-
c言語
-
Windows Formアプリからコンソ...
-
gccを行ってもexeファイルが生...
-
VisualStudio2022でC言語プログ...
-
UART通信の取説で,left floati...
-
C#でTreeViewのCheckBoxのサイ...
-
10進数からN進数に変換するプロ...
-
Python、プログラミングについ...
-
[C言語]fputsとfprintfの違い
-
0 == False はいいけど
-
VisualStudioで、コードを印刷...
-
逆コンパイルと逆アセンブルの...
おすすめ情報