私はこのコード部分を実行した後にセグメンテーションフォールトを取得します。私が最初のprintfをコメントアウトすると、それはうまく動作します。なぜこれが起こりますか?あなたのmain
関数の内部C printf関数を追加した後のセグメンテーションフォルト。
#include <stdio.h>
int Func (int *a){
printf("%d\n",56);
printf("a is %d\n",*a);
return 3;
}
int main(){
int N, i, Planet, *a,junk;
junk=scanf("%d", &N);
*a = N;
Planet = Func(a);
printf("%d\n", Planet);
return 0 ;
}
を1行に1つの変数を宣言するためにあなたを提案し、
NULL
へのポインタを初期化すると思います。 (あなたの '* a = N;'行)は未定義の振る舞いです – yanoすべての警告を有効にしてコンパイルを試みましたか?その警告の1つがあなたのsegfaultの原因を示します。 – Evert
もう少し明確にするために、基本的にはどこにも*触れていない 'int *'があります。 '* a = N;'を実行すると、コンピュータはその場所に移動し、その場所に 'N 'の内容を書き留めます。これがセグメンテーションの原因となっています。 – turbulencetoo