Использование указателя и индекса

Когда непросто определить условие выхода из цикла с помощью указателя, то в заголовке оператора цикла можно использовать как переменную-указатель, так и индекс.

void MySum4 (int *ar, unsigned size, int *uS)

{ int *p=ar; unsigned i;

for (*uS=0, i=0; i<size; p++, i++) *uS+=*p;

}

В этом варианте надо не забыть изменить значение как указателя, который будет использоваться для доступа к элементу массива, так и значение индекса, используемое для выхода из цикла.

Заголовок функции и их вызов не зависят от того, какой вариант использовали при организации цикла. Разные виды параметра функции для результата приведены только с целью повторения. Для проверки рассмотренных выше вариантов добавим функции для ввода и вывода массива.

void MyInp (int *ar, unsigned size)

{ int *p=ar;

for (int i=0; i<size; i++) *(p+i)=random(20)-10;

}

void MyOut (int *ar, unsigned size)

{ int *q=ar+size-1; cout<<endl;

for (; ar<=q;ar++) cout<<(*ar)<< " ";

cout<<endl;

}

int main()

{ // a) Работа со статическим массивом

const n=5; int a[n] ={1,2,3,4,5}, S2, S3;

cout<<MySum0(a,n)<<" "<<MySum1(a, n)<< endl;

MySum2(a,n, S2); cout<<S2<<" ";

MySum3(a,n, &S3); cout<<S3<<" ";

int *S4= new int;

MySum4(a,n, S4); cout<<*S4<<" "<< endl;

// b) Использование функций для динамического массива

randomize();

unsigned N; N=random(10)+2;

int *aD=new int[N];

MyInp(aD, N); MyOut(aD,N);

cout<<MySum0(aD,N)<<" "<<MySum1(aD, N)<< endl;

MySum2(aD,N, S2); cout<<S2<<" ";

MySum3(aD,N, &S3); cout<<S3<<" ";

MySum4(aD,N, S4); cout<<*S4<<" ";

getch(); return 0;

}

Обратите внимание на вызов функций MySum3 и MySum4. Особенности их вызова по сравнению с MySum2 связаны не с тем, как организован цикл в этих функциях, а с тем, что одно целочисленное значение возвращается из функции с помощью указателя, а не с помощью переменной ссылочного типа. Для лучшего понимания этих вариантов повторите § 3 главы 1.

§5. Строки.

В современных компьютерных системах, в том числе и в C++, большое внимание, как и в старых языках программирования, уделяется работе со строками. Это связано с тем, что компьютеры решают не только задачи вычислительного характера. Большое внимание уделяется также обработке и анализу текстовой информации.


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



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