[英]Pass by pointer/pass by reference in C
我知道如何在函数中传递指针,我觉得我仍然对两种术语感到困惑,例如按引用传递和按指针传递。
有人问我:
编写一个程序,该程序使用指针通过将变量x传递给其值加倍的函数来传递变量x。 函数的返回类型应该为空。 调用函数后,应从main()打印变量的值。 x的原始值为5。
我写了下面的代码。 您能根据问题的要求告诉我哪个评论编号正确,并消除我的疑问?
#include <stdio.h>
//double pointer
//void double_ptr(int **x_ptr)
//{
// **x_ptr *=2;
//}
void double_ptr(int *x_ptr)
{
*x_ptr *=2;
}
int main()
{
int x=5;
int *x_ptr=&x; // single pointer
//double_ptr(*x_ptr); // this is out of question's demand.
//int**x_x_ptr=&x_ptr; // double pointer
//double_ptr(&x_ptr); // 1. pass with double pointer
//double_ptr(x_x_ptr); //2. pass with double pointer
//printf("%d",**x_x_ptr); //3.print with double pointer
double_ptr(x_ptr); //4.pass by pointer?
//double_ptr(&x); //5.pass by reference?
printf("%d",*x_ptr);
return 0;
}
指针传递实际上是按值传递,C中没有这样的引用传递概念。
在C语言中,按引用传递==通过指针传递。
void double_ptr(int *x_ptr)
{
*x_ptr *=2;
}
int main()
{
int x=5;
double_ptr(&x); /* a value is being passed*/
}
通过引用传递(在C ++中):
void double_ptr(int& x_ptr)
{
x_ptr *=2;
}
int main()
{
int x=5;
int &x_ptr=x;
double_ptr(x_ptr); /* no temporary is being created i.e. no extra memory allocation is here*?
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.