Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Пример 3_4_2. Указатели и массивы символов




#include <iostream>

using std::cout;

using std::endl;

Int main()

{

       char string1[10], *string2 = "Hello",

           string3[10], *string4 = "GoodBye",

         * tmp;

       //копирование string 2 в string 1, используя обозначение массива

       for (int i=0; (string1[i]= string2[i])!= '\0'; ++i)  ;

       cout<<"string1:"<<string1<<endl;

       //копирование string4 в string3, используя обозначение указателя

       tmp=string3; //используем tmp, т.к. нельзя string3++

       for (; (*tmp = *string4)!= '\0'; tmp++, string4++)  ;

       cout<<"string3:"<<string3<<endl;

      

       system("pause");

       return 0;

}

 

Пример 3_4_3. Указатели и массивы символов

 

#include <cstring>

#include <iostream>

using std::endl;

using std::cout;

Int main()

{     // использование функции strtok для определения слов в предложении

       // разделитель слов - пробел

       char str[] = "Это предложение из 5 слов";

       char *tkPtr; //указатель на слово

       tkPtr = strtok (str, " ");

       while (tkPtr!= NULL) {

                   cout<<tkPtr<<endl;

                   tkPtr=strtok(NULL, "  ");

       }

       system("pause");

       return 0;

}

 

 

Указатели и ссылки как параметры

 

Передача параметров по адресу. Указатели и ссылки используются для передачи параметров по адресу.Схема обмена информацией вызывающей программы и функции с использованием передачи параметра по адресу приведена на рисунке 3.1. В этом случае формальный параметр a обрабатывается в функции как переменная, адрес которой есть адрес соответствующего фактического параметра x.

Рисунок 3.1 – Передача параметра по адресу

В операторе вызова фактическим параметром может быть только переменная.

Любое изменение формального параметра a есть изменение соответствующего ему фактического параметра x. После завершения работы функции f значение x равно 1, так как в функции выполнен оператор а++.

Пример 3_5_1. Перестановка значений

Вариант 1

# include < iostream >

using std::cout;

using std::endl;

void swap _ values (int * a, int * b)  // формальный параметр - указатель

{

       int temp =* a;                       // требуется разыменование указателей

       *a=*b;

       *b=temp;

}

Int main()

{

       int x =10, y =20;

       swap _ values (& x, & y);     // требуется операция &, так как

// параметры передаются по адресу

       cout << x <<" "<< y << endl; // результат: 20 10

       system("pause");

       return 0;

}

Вариант 2

#include <iostream>

using std::cout;

using std::endl;

void swap _ values (int & a, int & b)   // формальный параметр - ссылка

{

       int temp = a;                       // НЕ требуется разыменование указателей

       a=b;

       b=temp;

}

Int main()

{

       int x =10, y =20;

swap _ values (x, y);        // НЕ требуется операция &

       cout << x <<" "<< y << endl; // результат: 20 10

       system("pause");

       return 0;

}

 

 

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

 

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

 

 





Поделиться с друзьями:


Дата добавления: 2018-10-14; Мы поможем в написании ваших работ!; просмотров: 369 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Студенческая общага - это место, где меня научили готовить 20 блюд из макарон и 40 из доширака. А майонез - это вообще десерт. © Неизвестно
==> читать все изречения...

3645 - | 3562 -


© 2015-2026 lektsii.org - Контакты - Последнее добавление

Ген: 0.008 с.