Указатели и ссылки. Оперативная память компьютера. Адреса переменных

Страницы работы

Фрагмент текста работы

ЛЕКЦИЯ № 10

Указатели и ссылки

Оперативная память компьютера разделена на последовательно пронумерованные ячейки. Каждая переменная размещается в одной или нескольких последовательно расположенных отдельных ячейках памяти, адрес первой из них называется адресом переменной. Каждая ячейка в оперативной памяти занимает один байт или 8 бит. Ниже схематически представлено размещение переменной X=5 типа short int (размер 2 байта) в оперативной памяти компьютера.

Оперативная память компьютера разделена на последовательно пронумерованные ячейки. Каждая переменная размещается в одной или нескольких последовательно расположенных отдельных ячейках памяти, адрес первой из них называется адресом переменной. Каждая ячейка в оперативной памяти занимает один байт или 8 бит. Ниже схематически представлено размещение переменной X=5 типа short int (размер 2 байта) в оперативной памяти компьютера.

Указатель (pointer) – это переменная, хранящая адрес другой переменной (другого объекта). Размер всех указателей равен 4 байтам. Адрес можно получить с помощью оператора обращения к адресу (&). Ниже приведена программа, которая выводит адреса переменных.

#include <iostream> #include <stdio.h> using namespace std; int main()

//объявление и инициализация переменной a типа bool bool a = 2;

//объявление и инициализация переменной b типа int int b;  

//объявление и инициализация переменной c типа long int long int c;  

//вывод на экран адреса переменной a cout <<"adress a="<<&a<<endl; //вывод на экран адреса переменной b cout <<"adres b="<<&b<<endl; 

//вывод на экран адреса переменной

cout <<"adres c="<<&c<<endl; 

return 0; 

}

После запуска программы на выполнение, на экране можно увидеть адреса переменных.

Следует иметь в виду, что результат зависит от характеристик компьютера.

Объявить указатель можно следующим образом:

Тип * переменная

Компилятор различает тип переменной, адрес которой будет храниться в указателе. При несовпадении типов будет выдано сообщение об ошибке. После объявления указателю желательно присвоить какое- либо значение, например 0. Не следует использовать неинициализированные указатели. Например, фрагмент кода программы:

//объявление целочисленной переменной x  int x=5; 

//объявление указателя px целочисленного типа  int * px=0; 

//присвоение значению указателя px адреса переменной x  px=&x;  схематично можно представить следующим образом:

Пример программы с использованием указателей:

#include <iostream> #include <stdio.h> using namespace std; int main()

//объявление и инициализация переменной a типа bool bool a = 0;

//объявление и инициализация переменной b типа int int b=12;

//объявление и инициализация переменной c типа long int long int c=123456789;

//объявление и инициализация указателя pa типа boolbool *pa=0; 

//объявление и инициализация указателя pb типа int int *pb=0;

//объявление и инициализация указателя pc типа long int 

long int *pc=0;  

//указателю pa типа bool присваивается адрес переменной a типа bool pa=&a;

//указателю pb типа int присваивается адрес переменной b типа int pb=&b;

//указателю pc типа long int присваивается адрес переменной b типа long int pc=&c;  

//вывод на экран адреса переменной a cout <<"adres a="<<&a<<endl; 

//вывод на экран адреса переменной b cout <<"adres b="<<&b<<endl; 

//вывод на экран адреса переменной c cout <<"adres c="<<&c<<endl; 

//вывод на экран значения указателя pa cout <<"pointer pa="<<pa<<endl

Похожие материалы

Информация о работе