質問: c言語でN次正方行列AとN次元ベクトルxの積y=Axを計算するプログラムを作っているのですが、 最初のscanfで数値を入力したらsegmentation faultと表示されてしまいます。何が原因なのでしょうか。 ``` #include #include void PrintVector(int *y, int n){ int i; for(i=0;i
回答: 3点修正したら正常と思われる表示が得られました。 1. main関数内に`ai = a`とあるが、aは実態が伴っていないのでおかしい。 `ai++`と操作しているのでaをaiの先頭番地として記憶させたいのであれば `a = ai`とするのが正しい。 2. *xと*yがnullポインタになっている。 x,yのサイズを動的に変えたいなら、ai同様にx,yそれぞれにmallocでメモリを割り当てるのがよい。 動的に変える必要がないなら、int x[100],y[100]でもよい。 3. main関数の最初のfor文中に`ai++`とあるが、これは`ai+=num`の誤りだと思われます。