我有這樣的代碼不正確的結果在C代碼
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
main()
{
double b;int a[2],*c;
void myfunction();
c=(int*)(malloc(1));
b=10.;
*c=5;
a[1]=1;a[2]=2;
printf("before call %f $d $d %d\n",b,a[1],a[2],*c);
printf("before call %f $d $d %d\n",b,a[1],a[2],*c);
myfunction(b,a,c);
printf("after call %f $d $d %d\n",b,a[1],a[2],*c);
}
void myfunction(x,y,d)
double x;int y[2],*d;
{
double z;
x=2*x;
y[1]=3*y[1];
y[2]=3*y[2];
*d =*d+2;
}
當我執行它,我收到此
before call 10.000000 $d $d 1
before call 10.000000 $d $d 1
after call 10.000000 $d $d 3
我期望能獲得5在第一和第二個電話和7在最後一次通話,也沒有顯示[i] 。 可以請你告訴我爲什麼? 謝謝
''%,不''$ ... –
'C =(INT *)(malloc的(1)); [...] * c = 5;'越界訪問,未定義的行爲。 – EOF
此FWIW此代碼是超級非慣用 - 在同一行上聲明的不同類型的變量,在函數內聲明的函數,舊式函數定義。 –