dポイントプレゼントキャンペーン実施中!

int nData[10];
と配列作ったとき、要素数が10個っていうのを取り出すには
どうすれば良いでしょう?
int x=nData.GetSize(); //タイトルのようにエラーとなります。
x=Sizeof(nData)/4; //intなので4byteで割った・・・。あはは。

基本的な事柄でスミマセンが出てきません。宜しくお願いします。

A 回答 (3件)

x=Sizeof(nData)/sizeof(int);


で良いかと思います。
しかし10という値は自分で設定しているわけですから
#define ARRAY_SIZE 10
int nData[ARRAY_SIZE];
としておけば、
x = ARRAY_SIZE;
でいいはずです。

javaの配列なんかだと.lengthで要素数がとれますが
cの配列はそんなことは出来ません。
    • good
    • 0
この回答へのお礼

的確なご回答ありがとうございます。
そうですよね。最初に定義しときゃ、後で変更するとき
その部分だけ変えれば、済むんですよね・・・。

お礼日時:2005/11/04 01:02

正確には、



size_t x = sizeof nData / sizeof nData[0];

ですね。
C++であれば、

template <typename T, std::size_t N>
std::size_t lengthof(T (&array)[N])
{
 return sizeof array / sizeof(T);
}

という関数を作っておくと便利でしょう。

Cの場合、類似のマクロを作ることもできますが、配列ではなく(間違って)ポインタを渡してしまってもコンパイルエラーにできないので、あまり安全とはいえません。
一応参考までに書いておくと、

#define lengthof(array) (sizeof(array) / sizeof(array)[0])

といった感じです。
    • good
    • 0
この回答へのお礼

CARRAYって宣言してGetSizeでとってこれるから簡単ジャンと思ってたら
配列だと「'.GetSize' : 左側がクラス、構造体、共用体ではありません。」
ありゃ? と右往左往しておりました。
全体のサイズを一個目のサイズで割ってあげればよかったんですね。
いろんな書き方があるんですね。勉強になります。

お礼日時:2005/11/04 01:12

int n = (sizeof nData) / sizeof nData[0];

    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2005/11/04 01:04

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