Циклы. Инициализация массива размерности n случайными целыми положительными значениями от 0 до 32767, страница 4

return 0;

}

Результат:

31

54

77

52

93

Тот же результат получим, если при выводе значений на экран в цикле будет записан оператор:

cout << *ptrint++ << endl; 

или: 

cout << *(ptrint +j) << endl;      

А теперь в этом же примере в операторе вывода расставим скобки по-другому:

#include <iostream.h>

int main()

{

int intarray[] = { 31, 54, 77, 52, 93 };

int* ptrint;                             

ptrint = intarray;                      

for(int j=0; j<5; j++)                  

cout << (*ptrint)++ << endl;     //вывод измененного значения первого элемента

return 0;

}

Результат будет иным:

31

32

33

34

35

Проанализируйте следующий фрагмент программы и обратите внимание на операторы, отмеченные комментарием

#include <iostream.h>

#include <stdlib.h>

main(){

typedef   int   ar5_i [5];     //устанавливаем название типа для массива из 5-и элементов int

ar5_i  a ={1, 2, 3, 4, 5};   //определяем и инициализируем  переменную а  типа                                                         // «массив из 5-и int»

cout <<  a << endl;            // адрес  «массива из 5-и int»

int *p_i;                      // «указатель на int»

ar5_i  *p_ar5_i;           //«указатель на «массив из 5-и  int»            

p_i=a; 

cout <<  p_i << endl;       // да!!!  «указатель на int» = адрес  «массива из 5-и int»

cout << *p_i << endl;      // 1

 //  p_i=&a;                           //нет!!!  «указатель на int»  = указатель на «массив из 5-и int»   

p_ar5_i=&a;              // да !!!  «указатель на массив из 5 int» =адрес «массива из 5 int» 

  // p_ar5_i=a;                   // нет !!!  «указатель на массив из 5 int» =«массив из 5 int» 

cout << *p_ar5_i << endl;      // адрес а – «массива из 5 int» 

cout <<  **p_ar5_i << endl;   // 1

   // p_ar5_i=&p_i;             // нет !!!  «указатель на массив из 5 int» =                                              //указатель на «указатель на int»              

return 0;

}

Передача одномерного массива в функцию в качестве параметра:

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

#include <iostream.h>                             //способ 1

#include <conio.h>

int adder  (int [ ]);            //прототип функции

const int n=7;                   //размерность массиваглобальная константа, видима везде

int main()

{

static int  iarray[n] ={5, 1, 6, 20, 15, 0, 12};    //определение и инициализация массива

int isum;

isum= adder(iarray);          //вызов функцииadder, ей передается адрес массива

cout << "isum=" << isum <<  endl;

getch();

return 0;

}

int adder  (int iarray[ ])                       //определение функции

{ int i, ipartial=0;

for (i=0; i<n; i++)                              //n – глобальная константа, видима здесь

ipartial +=iarray[i];       //накопление суммы элементов в переменнойipartial

return (ipartial);                                  // сумма в качестве возвращаемого значения

}

В рассмотренном примере размер обработки фиксирован, однако количество обрабатываемых элементов можно передавать дополнительным параметром:

#include <iostream.h>                  //способ 2

#include <conio.h>

int adder  (int [ ], int);                       //прототип функции, появился второй параметр

const int n=7;                                //размер массиваглобальная константа, видима везде

int main()

{    int isum;

static int  iarray[n] = {5, 1, 6, 20, 15, 0, 12};   //описание и инициализация массива

isum= adder(iarray, 3);     //вызов функции, ей передается адрес массива и                                                    //количество элементов для обработки