這裏請參考代碼中的註釋。分段錯誤(核心轉儲)發生在這裏的行* p = h。但是,當我在分開的另一個新的C文件單獨運行這條線是完全沒問題C(核心轉儲)中的分段錯誤 - 簡單的指針
#include<stdio.h>
int *max(int *a,int *b)
{
if(*a>*b)
{
return a;
}
else
{
return b;
}
}
int main()
{
int h=1;
int *p;
int i=1,j=2,k=3;
int *a,*b,*c,*d;
c=max(&i,&j);
d=&i;
printf("\nOutput from the max function %d\n",*c);
printf("\n%d\n",*d);
*p=h; // Line where segmentation fault is occurring
printf("\n%d\n",*p);
return 0;
}
'p'未初始化。 – BLUEPIXY
它應該是'p =&h;'和'p = malloc(sizeof(int))之一; * p = h;' – A4L
在這裏你不需要使用帶'p'的指針。只需將其聲明爲'int p;'並賦予'p = h'即可。 –