• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ポインタエラー?)

ポインタエラー?コンパイルエラーで、つまづいてます

このQ&Aのポイント
  • ポインタエラー?コンパイルエラーで、つまづいてます
  • コンパイルエラーで、型が合ってないというのはわかるのですが、どうしたらいいのかわかりません。どこを改善すればいいでしょうか
  • 関数ichi()を作成し、プログラムを完成させよ。main内部を変更してはならない。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.3

>なので、動作がうまくいってない。といったところです。 >どこがうまくいってないんでしょうか? そもそも、「関数ichi()を作成し」の仕様は? まぁ、だいたい想像は付きますが……。 >*x++; ふつ~に x++; じゃないんですかね? >cnt = &n; こんなトコでグローバル変数を使う必要があるんですかね? さらに、仮引数のアドレスを返すことに意味があるんですかね? ichi()から抜けた後、このアドレスが指している場所の内容は保証されませんがいいんですかね? ichiには、第1引数で渡した配列のサイズは伝わっていないコトになりますが…ループの回数はどうしたらいいと思いますか? # 定数が設定されているのでそれを利用…ってコトになるんでしょうけどね……。 ちなみに今のままだと、ポインタの先が0を指すまで。ということになります。 バッファオーバーランを引き起こすお手本とも言えます。 # 書き込みしていなければ…重大な問題にならない…かも知れませんが、いずれ保護された領域から飛び出してOSに止められることになりますけど。 # 今時のOSが動いている環境ならば。(組み込み系だとそうはいかない)

izupawapuro
質問者

補足

for文で書いたほうがいいってことでしょうか? ただ cnt=&nは適当に書いただけで 最初はcnt = cnt + 1みたいになってました ただ、配列を返すとなるとあまり関係ないみたいですね・・・ そうするとcnt[MAX-?]みたいになるのでしょうか ループはヒントを頼りにすれば仮に i < MAX でしょうか?

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.2

コンパイルエラーではなく実行時のエラーでは? 1. 配列xの要素に0が設定されなかった場合どうなるのか。 2. 0は検索できないが問題ないのか。 考えてみたら?

izupawapuro
質問者

お礼

コンパイルエラーじゃなかったでした、勘違い 実行して結果どおりにならなかった、ということですね。 >1. 配列xの要素に0が設定されなかった場合どうなるのか。 >2. 0は検索できないが問題ないのか。 >考えてみたら? 考えてみましたが・・・うーん? whileのとこに問題があるってことでしょうかね。中身というか while(*x!=0)とか?いや、やってること自体は同じですよね

すると、全ての回答が全文表示されます。
回答No.1

どのようなエラーが出るのでしょうか。 エラーメッセージを教えてください。 ちなみに、うちのgcc4では、オプション無しで普通にコンパイルできましたが・・。 ※コピペしただけではSyntax Errになったので、"#define MAX 10"の行と、"int X[MAX],i,n,*p;"の行は空白をあけました。 以下ソース #include <stdio.h> #define MAX 10 int *ichi(int *,int); int main() { int x[MAX], i, n, *p; for (i = 0; i < MAX; ++i) { scanf("%d", &x[i]); } scanf("%d", &n); p = ichi(x, n); if (p) { printf("%d ha %d ko me ni arimashita\n", n, p-x); } else { printf("%d ha arimasen desita\n", n); } return 0; } int *cnt; int * ichi(int *x,int n) { //int cnt; //cnt = 0; while(*x){ if(*x == n){ cnt = &n; //cnt = x; //return x; return cnt; } *x++; } return NULL; }

izupawapuro
質問者

お礼

すいません;; 修正してたらコンパイルエラーは消えてました なので、動作がうまくいってない。といったところです。 どこがうまくいってないんでしょうか?

すると、全ての回答が全文表示されます。

関連するQ&A