Читайте также:
|
|
int main()
{
char name[20];
char fam[20];
std::cin>>name;
std::cin>>fam;
int i=0;
while(i<100)
{
std::cout<<fam<<name<<"\n";
i++;
};
return 0;
}
11)чем объявление переменной отличается от его определения?
Определение – это текстовое описание объекта программы (переменной, функции, класса), по которому транслятор создает его внутреннее (двоичное) представление (размещает в памяти).
Определение объекта должно производиться в программе только один раз, а соответствующий ему внутренний программный код размещается в создаваемом при трансляции объектом модуле.
Объявление – сообщение транслятору об имени и свойствах объекта программы (переменной, функции), который в данной точке недоступен (неизвестен транслятору), но который используется программой.
Объявлений одного и того же объекта в программе может быть сколько угодно, сами они не порождают внутреннего программного кода, а только помогают сформировать корректное обращение к объявляемому объекту.
Понятие доступности (известности, видимости) опять-таки относит нас к организации процесса трансляции. Поэтому можно указать, как минимум, две причины, по которым возникает необходимость в объявлениях:
· определение переменной или функции находится в другом модуле (файле);
· определение переменной или функции находится «вниз по тексту». Большинство трансляторов «не заглядывает вперед» в поисках определений, поэтому если обращение производится до определения объекта, то он нуждается в дополнительном объявлении.
Определение переменной – обычное контекстное определение, задающее тип, имя переменной, производящее инициализацию. При трансляции определения вычисляется размерность и резервируется память. Размерность массивов в определении обязательно должна быть задана.
int a = 5, B[10]={ 1,6,3,6,4,6,47,55,44,77 };
Объявление переменной имеет синтаксис определения переменной, предваренный словом extern. В нем задается тип и имя переменной, запоминается факт наличия переменной с указанным именем и типом. Размерность массивов в объявлении может отсутствовать.
extern int a,B[];
Определение функции – обычное задание функции в программе в виде заголовка и тела, по которому она транслируется во внутреннее представление в том модуле, где встречается.
Объявление функции – информация транслятору о наличии функции с заданным заголовком (прототипом) либо в другом модуле, либо далее по тексту текущего модуля - «вниз по течению». Объявление функции состоит из прототипа, предваренного словом extern, либо просто из прототипа функции.
Прототип функции – заголовок функции со списком формальных параметров, заданных в виде абстрактных типов данных.
12)способы передачи параметров в С ++:сходства и отличия.
Параметры служат для обмена данными между вызывающим блоком и подпрограммой. Передаваемые в подпрограмму данные записываются в отдельную область памяти, называемую стеком, доступную только для данной подпрограммы. В связи с этим, данные из стека не могут быть доступны вызывающей программе. Чтобы данные, которые обрабатывала подпрограмма, могли быть использованы в вызывающей программе, они остаются в области памяти, отведенной вызывающей программе, а в стек записываются их адреса.
Для использования этих двух способов доступа подпрограммы к данным, в языке Паскаль существуют различные типы формальных параметров (см. рис.5.5):
· Параметры-значения;
· Параметры-переменные;
· Параметры-константы.
Параметры-значения переписываются в стек целиком. Такой способ позволяет использовать в качестве фактического параметра не только переменную, но и константу. Параметры-значения используются в качестве входных данных подпрограммы, при обращении к которой фактические параметры просто передают свое значение формальным переменным и больше не изменяются. Использование таких параметров особенно характерно для подпрограмм-функций.
При использовании параметров-переменных, в стек записывается не значение переменной, а адрес места памяти, которое под нее отведено. В отличие от параметров-значений, перед описанием формальных параметров-переменных в заголовке подпрограммы ставится служебное слово var. С помощью параметров-переменных в вызывающий блок можно вернуть не одно вычисленное значение, а несколько. Т.о. параметры-переменные могут использоваться и в качестве входных данных, так и в качестве выходных.
В связи с описанными особенностями параметров-переменных, фактические параметры-переменные, в отличие от параметров-значений (см.п.5.5., таблица 5.1.), не могут быть константами или выражениями.
Параметры-константы передаются в подпрограмму, как и параметры-переменные, с помощью адреса, однако, на их изменение в подпрограмме наложен запрет. Такая передача данных позволяет экономить память стека. При описании формального параметра-константы перед его именем ставится служебное слово const.
Таким образом, параметры-значения и параметры-константы используются только для передачи конкретных значений в подпрограмму. При этом основная программа защищена от опасности случайной порчи значений каких-нибудь переменных (побочных эффектов), так как из подпрограммы переданные значения не возвращаются. В случае, если нужно вернуть из подпрограммы рассчитанные в ней несколько значений, необходимо использовать параметры-переменные, значения таких параметров в вызывающую программу возвращаются. С помощью параметров-переменных можно одновременно передавать значения в подпрограмму и возвращать обратно.
Дата добавления: 2015-01-05; просмотров: 156 | Поможем написать вашу работу | Нарушение авторских прав |