Я знаю, как передать указатель в функции, я чувствую, что все еще путаю с двумя терминами, например, по ссылке и передаю по указателю.Передать указатель/передать по ссылке в C
меня попросили это:
Написать программу, которая использует указатели передать переменную х со ссылкой на функции, где удвоенным его значение. Тип возвращаемой функции должен быть недействительным. Значение переменной должно быть напечатано из main() после вызова функции. Начальная величина равна 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;
}
Чистый С не поддерживает "пройти по ссылке". Вы либо передаете значение ('f (x)'), либо передаете значение указателя на значение (непосредственно через 'f (& x)' или через 'int * xp = & x; f (xp);') , Поэтому, если вас попросят привести пример прохождения по ссылке, терминология используется очень слабо и может просто означать случай 'f (& x)'. – lurker
Чтобы уточнить, у C нет ссылок, поэтому, когда кто-то говорит «pass by reference» _ в языке C, они действительно означают «pass by pointer» –
см. Здесь для хорошего учебника http://www.codingunit.com/c -tutorial вызова по значению или вызову по ссылке – holzben