這兩個數交換的代碼是分割故障(核心轉儲)在在C
#include <stdio.h>
void swap(int *a,int *b)
{
int *tmp;
*tmp=*a;
*a=*b;
*b=*tmp;
}
void main()
{
int i,j;
printf("Enter any number\n");
scanf("%d",&i);
printf("Enter another number\n");
scanf("%d",&j);
printf("Numbers before swap\n");
printf("value of i : %d\n",i);
printf("value of j : %d\n",j);
swap(&i,&j);
printf("Numbers after swap\n");
printf("value of i : %d\n",i);
printf("value of j : %d\n",j);
}
上面一個是我的代碼,它工作正常,但是當控制檯輸出打印,它會給分割故障(核心轉儲) 這裏是O/p
abc:~/Desktop/C$ ./a.out Enter any number 34 Enter another number 54 Numbers before swap value of i : 34 value of j : 54 Numbers after swap value of i : 54 value of j : 34 Segmentation fault (core dumped)
我想這樣的INT主要(),並在年底返回0,但仍然面臨着同樣的問題 – dhimanta
'tmp'不指向一個有效的內存位置。 –
如果您向編譯器調用添加了合適的警告級別,您將很容易發現自己。習慣於這一點,生活將會更容易。 – mfro