Структурный указатель в ООП на си

Рейтинг: 0Ответов: 2Опубликовано: 24.05.2023

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

Ответы

▲ 1

Структурный указатель - тоже что и указатель на стуктуру. Масло масляное... Если вам такой вопрос задаёт препод, то с его знанием языка просто что-то не так. Возможно он имеет ввиду поле (iptr) структуры.

typedef struct {
    int i;
    int* iptr;
} Test;

int main() {
    Test test;
    Test* test_ptr = &test; // указатель на структуру
    return 0;
}

В C есть и ООП и наследование, если захотите могу показать как. Страуструп не сразу C++ создал, сначала он извращался с C =)

▲ 0

Структурный указатель и указатель на структуру - одно и то же.

Препод в университете так не считает, и настойчиво просит объяснить как используется структурный указатель в ООП

На самом деле, правильно говорить - указатель на объект структуры, т.к. структура - это пользовательский тип данных и можно создавать объекты этого типа данных.
В ООП указатель на объект класса (структуры) используется под зарезервированным в языке именем this. Он неявно передается в функции-члены класса (структуры) для обозначения, над каким объектом нужно выполнять действие. Это позволяет использовать синтаксис вызова функций-членов класса относительно объекта

struct my_struct
{
   int id;
   void SetID(int x) { id = x; }
};

my_struct a;    // создание объекта а класса my_struct
a.SetID(10);    // вызов функции-члена класса 

// на самом деле транслируется в вызов
SetID(my_struct *ptr, int x) { ptr->id = x; }

Скорее всего преподаватель спрашивал вот об этом.