アプリ版:「スタンプのみでお礼する」機能のリリースについて

よろしくお願いします。
配列の要素数には定数しか入れられないのですが,どうしても変数を入れたいときは,それを引数として関数を呼び出すしか方法はないでしょうか。
具体的には,scanfで手に入れたint型の変数を要素数とする配列を宣言したいのですが,どうすれば良いでしょうか。
ご教授ください。

A 回答 (3件)

「それを引数として関数を呼び出す」という表現で何を言わんとしているのか全く想像できないのだが, 今の C の規格に従う処理系なら何も考えずに定義すればいい. 例えば


int N;
scanf("%d", &N);
int a[N];
でいける.

この回答への補足

早速の回答をありがとうございます。
BCCですとindexの部分に定数式が必要と出て,変数が扱えないようです。他のコンパイラではできるのでしょうか。

補足日時:2010/01/04 01:03
    • good
    • 5

c99と呼ばれる最近の規格では、配列の大きさに変数を使用できます。


bccはc99に対応していないようです。

それ以前の規格では、動的領域確保関数 malloc や callocを使って領域を確保するか、効率等を無視してバカデカい配列を用意しておくかです。
「それを引数として関数を呼び出す」っていうのは、malloc/callocのことですか?
    • good
    • 4

#include <stdlib.h>


...
int* p;
p = (int*)malloc(sizeof(int) * N); /* N は確保したい要素数 */
.... p[i] を使う。使用後はは必ず↓ */
free(p);
    • good
    • 8

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A