C++和多指针

标签 c++ pointers

我有一个关于指针的简单问题。这是我的代码:

#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;

编辑:是的,我看到了我的错误

最佳答案

如果您正在使用 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;
}

顺便说一句,你没有初始化任何变量。

关于C++和多指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3942701/

相关文章:

C++ 函数返回数组

c++ - 如何防止程序违反单例模式

c++ - 为什么将 `printf` 作为模板函数参数传递成功但 `cos` 失败 (msvc 19)?

c - 如何检查void指针是否指向任意低地址?

c++ - 指针积分加法中关于类型、溢出和 UB 的混淆

c - 指针:引用第一个元素是否有助于定位整个数组?

delphi - Delphi 中的 Move 与 CopyMemory

c++ - 从模板参数中获取字段值而不是直接访问以允许相同信息使用不同名称的函数

c++ - 获取 PostThreadMessage 的 boost::thread 的 ID

c++ - C/C++ MultiMap 库