Студопедия

Главная страница Случайная страница

Разделы сайта

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






int main()






{

const int M=50;

int i, m, S, Mas[M];

int *pMas;

pMas=Mas;

cout< < " Vvedite razmer massiva m: " < < endl;

cin> > m;

cout< < " Vvedite massiv: " < < endl;

for (i=0; i< m; i++, pMas++) cin> > *pMas;

cout< < endl;

S=0;

pMas=pMas-m;

for (i=0; i< m; i++, pMas++) S=S+*pMas;

pMas=pMas-m;

for (i=0; i< m; i++, pMas++) cout< < *pMas< < ' ';

cout< < endl< < " S= " < < S< < endl;

}

Vvedite razmer massiva m:

Vvedite massiv:

1 2 3 4 5 6 7

1 2 3 4 5 6 7

S= 28

 

Программа почти не изменилась и выполняет такие же операции, как и предыдущая. Однако в С++ указатели используются чаще, чем работа с индексами.

 

Вывод. В языке С++ есть возможность осуществлять непосредственный доступ к памяти. Для этого предусмотрен специальный тип переменных – указатели.

Указатель – это переменная, содержащая адрес некоторого объекта.

Поскольку указатель является ссылкой на некоторую область памяти, ему может быть присвоен только адрес переменной, а не ее значение.

Указатели помогают осуществлять непосредственный доступ к памяти. Для того чтобы получить (прочитать) значение, записанное по адресу, который находится в указателе, используют операцию непрямого обращения или разыменования (*). Для этого используется имя указателя со звездочкой перед ним.

 

Вопросы для самоконтроля.

1. Что будет выдано на экран после выполнения программы unsigned int Var1 = 4000; cout < < & Var1;?

1. Значение Var1, то есть 4000

2. Адрес, за которым записано значение Var1

3. Сообщение об ошибке

2. Укажите правильное определение указателя в С++.

1. *float pf;

2. float*pf;

3. float pf*;

3. Возможна ли такая инициализация указателя char ch = ‘y’; char *pch = & ch;?

1. Возможная

2. Не возможная

3. Такой конструкции в С++ нет

4. Какое значение примет y в программе

float x = 10.1, d; float * pf;

pf = & x; y = *pf;

1. y = 10.1

2. В переменную y запишется адрес, за которым находится значение х

3. Будет выдано сообщение об ошибке с указанием на последнюю строку

5. Можно ли в языке С++ выполнять арифметические операции над указателями?

1. Можно

2. Нельзя

3. Можно выполнять только операцию присвоения

6. Что определяет последний оператор в программе int и, mas[ и ]; int *pmas=mas;?

1. Разыменование указателя

2. Описание указателя

3. Описание указателя и присвоение ему начального адреса массива

7. Что означает запись int *px[7]?

1. Объявление указателя

2. Объявление массива указателей

3. Такую конструкцию в языке С++ использовать нельзя

8. Что определяет последний оператор в программе іnt *prt; prt= new int [100];?

1. Указателю prt присвоено значение 100

2. Указателю присвоен начальный адрес динамического массива

3. Указателю присвоено значение переменной new

9. Что будет выведено на экран дисплею после выполнения программы

int *prt;

for (i=0; i< 100; i++) cout< < *(prt+i)< < ” “;?

1. Значения элементов какого-то массива

2. Значения указателей

3. Такую конструкцию в языке С++ использовать нельзя

10. Укажите на возможность такого объявления указателя int ** pprt;

1. Возможно

2. Невозможно

3. Все зависит от содержания программы

11. На сколько байтов изменится значение pS1 в программе

int S1[20];

int *pS1=S1;

.....

pS1++;

.....

 

12. Каждой переменной программы память может выделяться статически. Этот процесс осуществляется при…

1. Наборе программы на экране дисплея

2. Компиляции программы

3. Выполнении программы

13. Переменным программы память может выделяться динамически. Этот процесс осуществляется при…

1. Наборе программы на экране дисплея

2. Компиляции программы

3. Выполнении программы

14. Выделение динамической памяти под переменную осуществляется с помощью оператора…

1. new

2. main

3. case

 

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.