C言語関係掲示板

過去ログ

No.199.配列の要素数の取得について


No.1250

配列の要素数の取得について
投稿者---naisen3232(2002/03/13 11:40:04)


はじめまして。
動的に要素数の変更するint型配列の要素数の取得をしたいのですが、上手くいきません。
以下のような関数を作成し、「全体のバイト数/配列要素の型のバイト数」という
処理をして要素数を求めているのですが...。

int iCmp(int iResult[]){

//変数宣言
int iRet=0;
int iCnt=0; //ループカウンタ
int iMax=0; //配列上限値

//***** 実行部 *****
iMax=sizeof iResult/sizeof iResult[0];
for (iCnt=1;iCnt<=iMax;iCnt++){
iRet=(iResult[iCnt] > iResult[iCnt-1]) ?
          iCnt:iCnt-1;
}

return(iRet);
}

上の関数で要素数を5にして実行すると、要素数 = 1というようになります。
私が間違っているのか、それとも取得方法が間違っているのか、教えていただけませんか?
よろしくお願いします。

No.1252

Re:配列の要素数の取得について
投稿者---ともじ(2002/03/13 20:15:40)


こんばんは。

配列の先頭アドレスを渡しても、関数側では、配列の要素数はわかりません。
ですから、関数を呼ぶ前に要素数を取得し、その要素数を引数で渡すなどの
工夫が必要になると思います。

No.1230のように番人を利用するというのも手ですね。

No.1306

ありがとうございました。
投稿者---naisen3232(2002/03/23 10:50:57)


ともじさん、御返答ありがとうございました。
C言語の勉強をはじめたばかりで、いろいろと頭を打っています(T_T)。
またいろいろなことで質問させていただくと思いますので、よろしくお願い致します。

戻る


「初心者のためのポイント学習C言語」 Last modified:2002.05.14
Copyright(c) 2000-2002 TOMOJI All Rights Reserved