a,bの値を入れ替える以下のようなコードを組みました。
c
1#include<stdio.h> 2 3void swap(int *i,int *j); 4 5int main(){ 6 int a,b; 7 8 a=6; 9 b=8; 10 printf("\nData before swap1 a=%d b=%d",a,b ); 11 swap(&a,&b); 12 printf("\nResult of swap1 a=%d b=%d",a,b); 13 14 return 0; 15} 16 17void swap(int *a,int *b){ 18 int *temp; 19 *temp=*a; 20 *a=*b; 21 *b=*temp; 22 return; 23}
これを実行するとsegmentation faultになりますが、なぜでしょうか?
個人的にはポインタtempを表示したあとに、何の値もいれずに通常変数(*p)として扱ったことに原因があると考えているのですが…
※プログラム8行目swap(a,b)をswap(&a,&b)に訂正しています
回答5件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/05/19 08:48