指向指针乘法指针的C ++指针不起作用

时间:2013-07-04 00:55:43

标签: c++ pointers

这可能是一个非常简单的问题,但无论如何: 我正在使用VS 2010,我想要的是在最后获得x **** y的结果。这是我的代码:

#include <iostream>
using namespace std;

void main()
{
    int x = 5;
    int *** y= new int**;
    ***y = 5;
    cout << x****y << endl;
    system("pause");
}

这只是让程序崩溃,我无法弄清楚原因。 这是我得到的错误日志:

    1>------ Build started: Project: Stuffing around, Configuration: Debug Win32 ------
    1>  main.cpp
    1>  LINK : D:\Programming Projects\Stuffing around\Debug\Stuffing around.exe not found or not built by the last incremental link; performing full link
    1>  Stuffing around.vcxproj -> D:\Programming Projects\Stuffing around\Debug\Stuffing around.exe
    ========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========

另外,如果没有动态分配内存,有没有办法实现相同的结果?非常感谢。

3 个答案:

答案 0 :(得分:2)

没有任何动态分配:

int x = 5;    
int i;
int *pi = &i;
int **ppi = &pi;
int ***y = &ppi;
***y = 5;
cout << x****y << endl;

如果没有动态,静态或自动分配,您无法做到这一点;指针需要指向的东西。

答案 1 :(得分:2)

你的代码是动态地将ptr分配给ptr到int,但不是它需要指向的嵌套ptr和int。 (希望所有的间接都有意义)要用动态记忆做这个,你需要这样的东西:

    #include <iostream>
    using namespace std;

    void main()
    {
        int x = 5;
        int *** y= new int**;
        *y = new int *
        **y = new int
        ***y = 5;
        cout << x* (***y) << endl;
        system("pause");
    }

要做到这一点而不动态分配内存,你需要这样的东西:

    #include <iostream>
    using namespace std;

    void main()
    {
        int x = 5;
        int y = 5;
        int *y_ptr = &y;
        int **y_ptr_ptr = &y_ptr;
        int ***y_ptr_ptr_ptr = &y_ptr_ptr;
        cout << x* (***y_ptr_ptr_ptr) << endl;
        system("pause");
    }

答案 2 :(得分:0)

Y未初始化。

y = new int**;
*y = new int*;
**y = new int;
***y = 5;