ページ 11

ポインタによる配列の指定 実行しても出力されない

Posted: 2015年12月05日(土) 13:04
by コハク

コード:

      for(int q=0;q<rule_n;q++){//rule_n=1296
	cout<<"&&&"<<endl;
	if((*(rule_old+p))[q]==0){continue;}
	cout<<"?"<<endl;
        count++;
      }
この処理を出力すると
&&&
&&&
?
と出力されます.
このループ以前で問題の配列を出力すると

コード:

cout<<(*(rule_old+p))[1]<<endl;
結果は
1
と出力されました.
ポインタの使い方が悪いのでしょうか?
出来るだけ処理を軽くしたいので, 配列で書き直さずにすむ方法はないでしょうか?

Re: ポインタによる配列の指定 実行しても出力されない

Posted: 2015年12月05日(土) 13:06
by コハク
すみません.
pのループが抜けていました

コード:

for(int p=0;p<N;p++){
    for(int q=0;q<rule_n;q++){//rule_n=1296
        cout<<"&&&"<<endl;
        if((*(rule_old+p))[q]==0){continue;}
        cout<<"?"<<endl;
        count++;
    }
}

Re: ポインタによる配列の指定 実行しても出力されない

Posted: 2015年12月05日(土) 13:23
by みけCAT
意味がよくわかりません。
出力するプログラムを書いていないから出力されないのではないでしょうか?
そのままコンパイルして実行できるソースコードと、期待する出力を提示してください。

Re: ポインタによる配列の指定 実行しても出力されない

Posted: 2015年12月05日(土) 13:50
by コハク
すみません.
解決しました.
このループで初期化していたところがあったのですが,

コード:

(*(rule_old+p))[q]=0
としなければいけないところを

コード:

*(rule_old+p)=0
と書いていたためにループが回らなかったようです.