YyyzzzxxxI
@YyyzzzxxxI

Как связать значения полей структуры с указателем?

struct Vector {
    void *x;
    void *y;
};

struct Complex {
    int real;
    int imagine;
};

int main(){
  struct Vector v;
//to do

return 0;
}


Хочу связать x и y с Complex, чтобы можно было делать типа этого:
v.x.real =5;
v.x.imagine = 7;
  • Вопрос задан
  • 550 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега C
Седой и строгий
Именно так, как вы хотите, не выйдет, у пустого указателя не может быть поля. Придётся сначала привести его к указателю на структуру, имеющую поле real. И так как это указатель, надо использовать стрелочный оператор для доступа к полю.
struct Vector {
  void *x;
  void *y;
};

struct Complex {
  int real;
  int imagine;
};

int main() {
  struct Vector v;
  struct Complex c1;

  v.x = &c1;

  ((struct Complex*) v.x)->real = 42;

  return 0;
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
zagayevskiy
@zagayevskiy
Android developer at Yandex
void * это указатель неизвестно на что.
struct Vector {
   struct Complex x;
   struct Complex y;
}

По-моему, так должно быть.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы