error C2109について – プログラミング – Home

通知
すべてクリア

[解決済] error C2109について


もも
 もも
(@もも)
ゲスト
結合: 23年前
投稿: 36
Topic starter  

構造体のプログラムなのですが・・・

①#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』が出てしまいます。
どこをを直せばエラーは出なくなりますか??


引用未解決
トピックタグ
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

丸付き数字は機種依存文字なのでネット上では使わないようにしてください。

> 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関数が便利ですけど。


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

> ちなみに全部0を設定するのならば、memset関数が便利ですけど。
というか、
宣言時に

struct s_type{
int i;
long I;
}s[10] = { 0 };

でOKかな。
C++だったらs_typeにコンストラクタを用意するのも手です。


返信引用
もも
 もも
(@もも)
ゲスト
結合: 23年前
投稿: 36
Topic starter  

ご丁寧にありがとうございました。
さっそく、試してみたいと思います。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました