с ++ и мульти указатели - PullRequest
       1

с ++ и мульти указатели

0 голосов
/ 15 октября 2010

У меня простая проблема с указателями.Вот мой код:

#include <iostream>
#include <vector>

using namespace std;

int main()
{
    typedef float RtPoint[3]; 
    RtPoint** b = new RtPoint*[4];
    b[0] = (RtPoint*)new RtPoint;
    RtPoint* p = b[0];
    RtPoint c;
    (*p)[0] = &(c[0]);
    (*p)[1] = &(c[1]);
    (*p)[2] = &(c[2]);
    std::cout << p[1] << " " << &(c[0]) << std::endl;
    delete[] b;

    return 0;
}

Так что я просто хочу ввести p[0], p[1] и p[2] адрес c[0], c[1] и c[2].Мой код неверен, но я не нашел решения.


Извините, моя ошибка, этот код работает:)

  typedef float RtPoint[3]; 
  RtPoint** b = new RtPoint*[4];
  b[0] = (RtPoint*)new RtPoint;
  RtPoint c;
  b[0] = &c;

Редактировать: да Я видел свою ошибку

1 Ответ

3 голосов
/ 15 октября 2010

Если вы используете c ++, забудьте о необработанных указателях и используйте std :: vector.

Но если вы действительно настаиваете:

#include <iostream>
#include <vector>
using namespace std;

int main()
{
    typedef float RtPoint[3];
    RtPoint** b = new RtPoint*[4];
    b[0] = (RtPoint*)new RtPoint;
    RtPoint* p = b[0];
    RtPoint c;
    (*p)[0] = c[0];
    (*p)[1] = c[1];
    (*p)[2] = c[2];
    std::cout << p[1] << " " << &(c[0]) << std::endl;
    delete[] b;
}

Кстати, вы не инициализировали ни одну переменную.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...