#c
Вопрос:
Это пример проблемы, демонстрирующей использование ссылок в c . я новичок, и это мой первый раз, когда я узнаю о ссылках. я не понимаю, почему мы используем amp;fun()
. что это значит?
#include<iostream>
using namespace std;
int amp;fun(){
static int x = 10;
return x;
}
int main(){
int amp;y=fun();
y = 20;
cout<<fun();
}
выход : 20
Комментарии:
1.
fun
является функцией, которая возвращаетint amp;
(ссылка наint
). Вы возвращаете ссылку на статическую переменнуюx
, и она назначаетсяy
.y = 20
измененияx
, и это можно увидеть, когда выcout<<fun()
.2.
int amp;
вместоint
означает, что функция возвращает ссылку наint
вместо простогоint
.3. Пробелы на самом деле не имеют значения для синтаксического анализатора.
int amp;fun()
,intamp; fun()
,int amp; fun()
, все они означают одно и то же — функциюfun()
, которая возвращаетintamp;
ссылку.4. По теме: цитирование вне контекста . Та же проблема относится и к вашему вопросу. Если вы цитируете только часть английского предложения, вы рискуете пропустить ключевые слова, которые влияют на значение. Если вы сосредоточитесь только на части строки (хорошо отформатированного) кода на C , вы рискуете пропустить символы, которые влияют на значение. 😉
Ответ №1:
Эквивалентный синтаксис таков intamp; fun()
. Таким образом, эта функция возвращает ссылку на » x » (то есть статическую), поэтому позже в main вы можете изменить ее ( y = 20
действительно изменить x
внутреннюю часть функции). Таким образом, еще один вызов возвращает 20, так как x
он был изменен.
Комментарии:
1. что произойдет, если я не буду использовать
amp;
int amp;fun()
его ?
Ответ №2:
int amp;
средство fun()
возвращает ссылку на an int
. В main()
, эта ссылка присваивается y
, и значение y
изменяется на 20, также изменяя значение x
на 20.