调用函数include指针

时间:2015-02-21 23:56:15

标签: c pointers

假设我们有一个包含指针的void函数: void order(double *smp, double *lgp)

当我们在main中调用函数时,它是 order(&num1, &num2);

我的问题是当我们定义函数时,它是“double *”,这意味着它是指针的值。但是当我们调用函数时,它是“&num1”,它是num1的地址。它们如何匹配?

它与我们定义指针时的相同: double *p = &value;,只是记住它?

2 个答案:

答案 0 :(得分:2)

*根据其使用位置有不同的含义。在变量定义中,它不是取消引用指针(获取它指向的值),而是说它是指向指定类型的指针。

double *p = &value; // * is used to declare a pointer
printf("%f", *p);   // * is used to get the value p is pointing to
int i = 2*3;        // * is used as a multiplication operator

答案 1 :(得分:1)

指针经常令人困惑,因为当你定义它时:

  

double * smp

这意味着“smp是一个包含双重地址的变量”

但是后来你做的时候

  

* SMP

这意味着“我想要smp中包含的地址指向的双精度值”。

这里你要混合两者:即使语法相同,其含义也大不相同。 所以当你定义你的函数时,*字符并不意味着它在这种情况下是一个值,它只是意味着它是一个指针,它将接收一个地址。