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に代入するためにキャストが必要なんです。
もう知っていたらごめんなさいです。。。
No.4
- 回答日時:
No.3の回答者です。
他の方の仰っている様にfree()が必要ですね。
私のコードの場合、returnの前に、
free(b);
が必要でした。
バグの元ですね。(^_^;
失礼しました。
No.3
- 回答日時:
通常の配列の要素数として引数を使用することは出来ません。
配列の要素数は定数でなければならないからです。
従って実現する為には他の手段が必要になります。
例えば以下の様にです。
int a (int hikisuu1, int hikisuu2){
int *b;
b=(int*)malloc(sizeof(int) * hikisuu1);
・
・
・
return 0;
}
このように動的なエリアを確保する様にするのが一つの解決策だと思います。
尚、何を返却するのか判りませんでしたので、とりあえず0としました。
また、hikisuu2も未使用です。
No.2
- 回答日時:
静的な配列割り当てでは、長さは定数(アセンブラを通すときに決定している値)である
必要があります。
ここでは、動的な割り当てを行います。Cでは、もっぱら、malloc関数を使います。
題と同じ変数名を用いると、
int *b;
b= (int*)malloc( sizeof(int)* hikisuu1);
(処理)
free(b);
と、静的割り当てと異なり、配列の使用の必要が無くなれば、free関数で
解放する必要があります。
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をしないとメモリリークが起きます。
ご注意を。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C#でログファイルにファイルパ...
-
c言語
-
大量のデータを読み込んで表示...
-
gccを行ってもexeファイルが生...
-
UART通信の取説で,left floati...
-
PC画面を録画するプログラムでd...
-
C言語について。
-
Windows Formアプリからコンソ...
-
プログラムを斜めに並べる
-
今ってプログラミング言語は何...
-
コンソールアプリを作成するの...
-
【C言語】全角文字の配列を、全...
-
C# DatagridviewにExcelシート...
-
逆コンパイルと逆アセンブルの...
-
プログラムの実行時に'<'でリダ...
-
バッチファイルで以下のような...
-
インクリメント演算子のみを用...
-
mallocについて
-
システムエンジニアの適正について
-
どちのほうがすきですか?
マンスリーランキングこのカテゴリの人気マンスリー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で、コードを印刷...
-
逆コンパイルと逆アセンブルの...
おすすめ情報