Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по информатике.doc
Скачиваний:
118
Добавлен:
02.05.2014
Размер:
1.53 Mб
Скачать

Передача массивов в функции

Ваши программы будут передавать массивы в функции точно так же, как и любые другие переменные. Функция может инициализировать массив, прибавить к массиву значения или вывести элементы массива на экран.

Когда вы передаете массив в функцию, вы должны указать тип массива. Нет необходимости указывать размер массива. Вместо этого вы передаете параметр, например number_of_elements, который содержит количество элементов в массиве:

void some_function(int array[], int number_of_elements);

Следующая программа передает массивы в функцию show_array, которая использует цикл for для вывода значений массивов:

#include <iostream.h>

void show_array (int array [] , int number_of_elements)

{    int i;    for (i = 0; i < number_of_elements; i++) cout << array[i] << ' ';    cout << endl; }

void main(void)

{    int little_numbers[5] ={1,2,3,4,5};    int big_numbers[3] = { 1000, 2000, 3000 };    show_array(little_numbers, 5);    show_array(big_numbers, 3); }

Как видите, программа просто передает массив в функцию по имени, а также указывает параметр, который сообщает функции количество элементов, содержащихся в массиве:

show_array(little_numbers, 5);

Следующая программа GETARRAY.CPP использует функцию get_values, чтобы присвоить три значения массиву numbers:

#include <iostream.h>

void get_values(int array[], int number_of_elements)

{    int i;    for (i = 0; i < number_of_elements; i++)

   {        cout “ "Введите значение " << i << ": ";        cin ” array [i];    } }

void main(void)

{    int numbers[3];    get_values(numbers, 3);    cout << "Значения массива" << endl;    for (int i = 0; i < 3; i++)    cout << numbers [i] << endl; }

Как видите, программа передает массив в функцию по имени. Функция в свою очередь присваивает массиву элементы.

Функция sizeof

Оператор sizeof определяет размер памяти, выделяемый под переменную определенного типа. С его помощью можно также определять объем памяти, выделяемый под массив или какой-либо из его элементов.

#include <iostream.h>

void main()

{

cout<<”\nsizeof(char) =”<<sizeof(char);

cout<<”\nsizeof(short) =”<<sizeof(short); //короткое целое

cout<<”\nsizeof(int) =”<<sizeof(int);

cout<<”\nsizeof(long) =”<<sizeof(long);

cout<<”\nsizeof(float) =”<<sizeof(float);

cout<<”\nsizeof(doble) =”<<sizeof(double); //вещест двойной точности

cout<<”\nsizeof(long double) =”<<sizeof(long double);

cout<<”\n”;

double a[] = {1.35, 6.12, -.6389, 41.4};

int b = sizeof(a);

int с = sizeof(a[0]);

int n=b/c; //размер массива

cout<<”Total memory = ”<<b;

cout<<”\nMemory to first arrays member =”<<c;

cout<<”\nArray’s size =”<<n;

}

Результат:

sizeof(char) = 1

sizeof(short) = 2

sizeof(int) = 4

sizeof(long) = 4

sizeof(float) = 4

sizeof(doble) = 8

sizeof(long double) = 8

Total memory = 32

Memory to first arrays member = 8

Array’s size = 4

Использование констант при объявлении массивов

При работе с массивами необходимо указать размер массива.

Предположим, мы хотим изменить программу, увеличив размер массива до 10 значений; в этом случае нам придется изменить не только объявление массива, но и границу цикла for. Альтернативой этому является объявление массива с использованием константы.

#include <stdio.h>

#define ARRAY_SIZE 5

void main(void)

{

int values[AKKAY_SIZE] = (80, 70, 90, 85, 80};

int i;

for (i = 0; i < ARRAY_SIZE; i++)

printf("values[%d] %d\n", i, values[i]);

}

Теперь, если понадобится изменить размер массива, можно просто изменить значение константы ARRA Y_SIZE; в этом случае автоматически изменится как верхняя граница цикла обработки массива, так и размер самого массива.