int func (int a, int b, int *c);
int main()
{
int res, x, y, z; //int res, x, y, *z;
printf("enter x \n");
scanf("%i", &x);
printf("enter y \n");
scanf("%i", &y);
res = func(x, y, &z); //res = func(x, y, z);
printf("result addition: %i, result multiplication %i \n", res, *z);
return 0;
}
int func (int a, int b, int *c)
{
int result;
result = a +b;
*c = a*b; //(1) alternative:d=a*b
// c=&d
return result;
}
我的問題是,我不明白,爲什麼當我寫它,因爲我喜歡我的評論(這樣做代碼不起作用// )。編譯器警告我,z沒有初始化,但爲什麼在工作版本中沒有這個問題?
另一件事我不明白的是,爲什麼它是正確的引用指針的值,就像我在(1),但它是錯在下面的代碼做了它:理解指針(指值)
int main()
{
int a, *c, *d;
scanf("%i", &a);
*c=a; //wrong
d=&a; //correct
return 0;
}
只是一個提示,但你應該總是把二進制運算符之間的空間,如乘法。你不想碰到一個bug,並且意識到你實際上已經解引用了某些東西,只是因爲'*'被視爲一元解引用操作符。你的代碼很簡單,所以你現在不必擔心,但如果它變得複雜,你可能會犯錯誤。 – Kacy 2015-02-07 22:08:05
當我看到什麼人投票下來,什麼人投票在這裏,它讓我頭痛 – Mcs 2015-02-07 22:11:16