假设我们有一个包含指针的void函数:
void order(double *smp, double *lgp)
当我们在main中调用函数时,它是
order(&num1, &num2);
我的问题是当我们定义函数时,它是“double *
”,这意味着它是指针的值。但是当我们调用函数时,它是“&num1
”,它是num1的地址。它们如何匹配?
它与我们定义指针时的相同:
double *p = &value;
,只是记住它?
答案 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中包含的地址指向的双精度值”。
这里你要混合两者:即使语法相同,其含义也大不相同。 所以当你定义你的函数时,*字符并不意味着它在这种情况下是一个值,它只是意味着它是一个指针,它将接收一个地址。