通知
すべてクリア
Topic starter
2005年11月29日 5:49 PM
構造体のプログラムなのですが・・・
①#include<stdio.h>
②main(){
③ int idx;
④ struct s_type{
⑤ int i;
⑥ long I;
⑦ }s[10];
⑧ for (idx=0;idx<10;idx++){
⑨ s->i[idx]=0;
⑩ s->i[idx]=0;
⑪}
⑫}
コンパイルすると⑨と⑩で『error c2109』が出てしまいます。
どこをを直せばエラーは出なくなりますか??
2005年11月29日 5:55 PM
丸付き数字は機種依存文字なのでネット上では使わないようにしてください。
> s->i[idx]=0;
とかくと、s[ 0 ].i[ idx ] と同等の意味になります。
当然 i は配列ではないのでエラーとなります。
設定したい対象が
s[ 0 ] ~ s[ 9 ]
なので、
s[ 0 ].i = 0;
s[ 1 ].i = 1;
・
・
という風にループをまわしてあげましょう。
# ( s + 0 )->i = 0;
# ( s + 1 )->i = 0;
# ・
# ・
# でもいけます。
ちなみに全部0を設定するのならば、memset関数が便利ですけど。
2005年11月29日 5:57 PM
> ちなみに全部0を設定するのならば、memset関数が便利ですけど。
というか、
宣言時に
struct s_type{
int i;
long I;
}s[10] = { 0 };
でOKかな。
C++だったらs_typeにコンストラクタを用意するのも手です。
Topic starter
2005年11月29日 6:00 PM
ご丁寧にありがとうございました。
さっそく、試してみたいと思います。