Передача параметров

В языке С параметры передаются только значением.

Формируется динамический вариант. Под формальный параметр выделяется отдельная область памяти. В нее пересылается значение фактического параметра.


Например: после вызова данной функции переменные будут обмениваться значениями

void swap(float *x,float *y)

{

float z; // здесь *x и *y являются указателями на данные действительного типа;
z=*x; x,y-локальные переменные;
*x=*y; область доступа - функция swap//
*y=z;

}

void main
{ // в результате вызова ф-ии y принимает значение адреса b;

……. X-значение адреса а;

swap(&a,&b); резервируется память под z….. и.т.д//

……

}


В С++ появляется возможность передачи значений ссылкой.

В этом случае память не выделяется. Соответствующий формальный параметр ассоциируется с областью памяти соответствующего фактического параметра

Для этого нужно перед параметром поставить знак «взятие адреса» &, который не является операцией, а носит лишь справочный характер.

В примере, указанном выше, для этого нужно вместо первых двух *(звездочек) поставить символы &(а именно: void swap (float &x, float &y)), а затем обращаться к параметрам уже без символа звездочка(swap(a,b)).

При этом значения x и а хранятся в одной области памяти, под x и y память не выделяется, под z – выделяется.

Передача массива в качестве параметра.

Элементы массива простого типа:

1). <идент. типа><идент.>[]; - передача значением; <идент.> имеет смысл «указатель».

Пример: сортировка массива.

void sort(int n, float a[])

{

}

n, - количество элементов массива; a, - сам массив.

2). <идент. типа><идент.>[const]{[const]}.

Элементы массива – массивы:

Необходимо указать количество индексов для элемента массива:

1). … float b[][5];- количество индексов в первой скобке можно не указывать, но в последующих обязательно(об этом говорилось ранее)

2). … float b[10][5]


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: