Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
13
Добавлен:
20.04.2015
Размер:
154.11 Кб
Скачать

Примеры

int I; // целая переменная

const int ci=1;// целая константа

int *pi;//указатель на целую переменную

const int *pci; //указатель на целую константу

int * const cp=&i; //указатель-константа на целую переменную

const int * const cpc=&ci;

//указатель-константа на целую константу

Инициализация указателей

Присваивание указателю адреса существующего объекта:

int a=5; // инициализируем целую переменную

int *pa=&a; // в указатель записывается адрес а

Операции с указателями

Разадресация (разыменование) – используется для получения или изменения значения по заданному адресу Обозначение: *

int x=10, y;//переменные типа int

int *px=&x; //указателю присваиваем значение адреса переменной х

y=*px; //значение y становится равным 10

Операции с указателями

int x, y;//переменные типа int

int *px=&x; //указателю присваиваем

значение адреса переменной х *px=10; //значение х становится равным 10

Операции с указателями

Арифметические операции:

Инкремент – увеличение указателя на величину sizeof(тип)

Декремент -уменьшение указателя на величину sizeof(тип):

int *p;

float *s; p++;//увеличивает p на 2 s++;// увеличивает s на 4

Операции с указателями

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

int x=10,*px, y=20,*py; px=&x; py=&y;

float *a,*b;

printf(“px=%d, py=%d, px-py=%d\n”, px,py,px-py);

printf(“a=%d, b=%d, a-b=%d\n”,a,b,a-b);

Результат выполнения: px=3fff4, py=3fff2, px-py=1 a=4ff26, b=4ffe10, a-b=4

Операции с указателями

Сумма указателя и константы int *px; cout<<“px=“<<px<<endl; px=px+4; cout<<“px+4=“<<px<<endl;

Результат: px=3fff4

px+4=3fffc

Замечания:

Арифметические операции используются только для указателей одного типа

Сложение указателей не допускается

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

Пример:

Void swap(int *a, int *b) { int temp=*a;

*a=*b;

*b=temp;

}

Вызов функции

Void main()

{ int a=10,b=2;

printf(“\n a=%d b=%d”,a,b); swap(&a,&b);

printf(\n new \n a=%d b=%d”,a,b);

}

Результат: A=10 b=2 New

A=2 b=10

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

Ссылка представляет собой синоним имени, указанного при инициализации ссылки

Ссылка является указателем, который всегда разыменовывается

Соседние файлы в папке лекции