调用函数包含指针
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".
在这里你将两者混为一谈:尽管语法相同,但含义却大不相同。
所以当你定义你的函数时,* 字符在这种情况下并不意味着它是一个值,它只是意味着它是一个将接收地址的指针。
假设我们有一个 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".
在这里你将两者混为一谈:尽管语法相同,但含义却大不相同。 所以当你定义你的函数时,* 字符在这种情况下并不意味着它是一个值,它只是意味着它是一个将接收地址的指针。