调用函数包含指针

call a function include pointer

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

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

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

是不是和我们定义指针的时候一样: double *p = &value;,背一下就好了?

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

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

指针常常令人困惑,因为在定义它时:

double *smp

表示"smp is a variable that'll contain an double's address"

但稍后当你这样做时

*smp

表示"I want the value of the double pointed by the address contained in smp".

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