Member 13174253 Ответов: 1

В чем разница ч/б этих троих..


один)
главный( )
{
int i = 5, j = 2 ;
208 Давайте С
мусор ( i, j ) ;
printf ("\n%d %d", i, j ) ;
}
мусор ( int i, int j )
{
i = i * i ;
j = j * j ;
}
(b)

главный( )
{
int i = 5, j = 2 ;
мусор ( & i, & j ) ;
printf ("\n%d %d", i, j ) ;
}
мусор ( int * i, int *j )
{
*i = * i * * i ;
*дж = дж * * *й ;
}


в) основной( )
{
int i = 4, j = 2 ;
мусор ( & i, j ) ;
printf ("\n%d %d", i, j ) ;
}
мусор ( int *i, int j )
{
*i = * i * * i ;
j = j * j ;
}

Что я уже пробовал:

то, что я понял,что, во-первых, описывает вызов по значению, а во-вторых, это вызов по ссылке...но как это происходит .
плз опишите

ans
а) 5 2
Б) 25 4
в) 16 2

1 Ответов

Рейтинг:
7

OriginalGriff

Когда вы передаете значение в C, оно передается по значению каждый раз.
Это означает, что значение" внешний мир " копируется, и эта копия отправляется в функцию. Любые изменения, вносимые функцией в значение, вносятся в копию значения и не отражаются во "внешнем мире" после завершения функции.

Вот почему эта версия:

   junk ( i, j ) ;
   printf ( "\n%d %d", i, j ) ;
...
junk ( int i, int j )
   {
   i = i * i ;
   j = j * j ;
   }
Выводит значения так, как если бы функция не была вызвана.

Когда вы передаете адрес значения функции, это адрес, который копируется и передается в качестве параметра, а не элемент, для которого он является адресом. Подумайте об этом как о машинах: вы всегда паркуете свою машину на одном и том же парковочном месте, поэтому вы можете сказать кому-то, где находится ваша машина, сказав "ряд 17, слот 12", и они могут найти вашу машину. Но "адрес машины" работает независимо от того, какая машина там находится: когда вы говорите своему другу, где находится ваша машина, и даете ему ключи, вы не делаете копию своей машины!
Итак, когда вы попробуете эту функцию:
   junk ( &i, j ) ;
   printf ( "\n%d %d", i, j ) ;
...
junk ( int *i, int j )
   {
   *i = *i * *i ; 
   j = j * j ;
   }
Значения, которые получает функция, являются копией адреса i и копией значения j. i адреса влияют на переменную во внешнем мире, изменяют значение j не надо, потому что это копия ценности.
Возвращаясь к машинам, ты отдал своему приятелю ключи и адрес, где припарковал машину. Если он разбивает машину во время вождения, ущерб наносится вашей машине, а не ее копии, потому что вы передали копию адреса машины, а не копию самой машины.

Теперь в этом есть смысл?


Member 13174253

действительно потрясающе, и спасибо вам, сэр....

OriginalGriff

Пожалуйста