Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

LAB4 C++

.txt
Скачиваний:
0
Добавлен:
03.11.2023
Размер:
2.13 Кб
Скачать
#include <iostream>

using namespace std;


void f(int a, int b) {
    cout << a + b << endl;
}


int main()
{
    int a = 10;
    int* pa = &a;
    cout << pa << endl; // типизированный указатель

    int b = 15;
    int* pb = &b;
    void* pb2 = pb; // нетипизированный 
    cout << pb2 << " " << pb << endl;
    
    int c = 20;
    int* pc = &c; // указатель на данные
    *pc = 2;
    cout << *pc << " " << c << endl;

    void (*plus) (int, int);
    plus = f; // указатель на функцию
    plus(2, 3);

    // *pc = c , где pc указатель, а с указуемый объект

    const int d = 25;
    const int* pd = &d;
    // *pd = 10; - не можем изменить
    // d = 15; - не можем
    
    int e = 30;
    const int* pe = &e;
    // *pe = 20; - не можем
    // e = 13; - можем

    int f = 100;
    int* pf = &f;
    int** ppf = &pf;

    cout << ppf << endl; // указатель на ссылку области памяти на ссылку области памяти в которой хранится f
    cout << *ppf << " " << &f << endl; // указатель на ссылку области памяти в которой f
    cout << **ppf << " " << f << endl; // указатель на значение f

    // разница 


    double x = 3.111;
    double y = 9.111;
    double& myref = x;
    // int& myref = y; - ссылку переопределить нельзя
    cout << myref << endl;

    double z = 3.111;
    double r = 9.111;
    double* pz = &z; // указатель можно переопределить, изменить значение ячейки 
                    // на область памяти которой он указывает
    pz = &r;
    *pz = 21.567;
    cout << *pz << endl; 

    // указатель может = null, ссылка всегда есть
    // указатель имеет ссылку, ссылка это и есть ссылка

}
Соседние файлы в предмете Языки программирования