这可能是一个非常简单的问题,但无论如何: 我正在使用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 ==========
另外,如果没有动态分配内存,有没有办法实现相同的结果?非常感谢。
答案 0 :(得分:2)
没有任何动态分配:
int x = 5;
int i;
int *pi = &i;
int **ppi = π
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;