【发布时间】:2015-05-16 09:35:23
【问题描述】:
#include <iostream>
using namespace std;
int *GetSquare(int x)
{
int y = x;
y = y * y;
return &y;
}
int main()
{
const int n = 4;
int *p[n];
for (int j = 0; j < 2; ++j)
{
p[2 * j + 1] = new int[2];
for (int i = 0; i < 2; ++i)
p[2 * j + 1][i] = 2 * j + 1;
}
p[0] = GetSquare(2);
p[2] = GetSquare(4);
for (int j = 0; j < n; ++j)
{
for (int i = 0; i < 1; ++i)
cout << p[j][i] << " ";
cout << endl;
}
return 0;
}
当我试运行这段代码时,我得到输出“4 1 16 3”。 在编译器中我得到“16 1 3 3” 我无法找到第一个输出是 16。我的代码有什么问题?
【问题讨论】:
-
请将您的标题更改为与您遇到的问题更相关的内容。 “没有得到正确的输出”几乎适用于任何软件错误。
-
一个问题是您的
GetSquare正在返回一个指向GetSquare本地变量的指针。那很糟。为什么不直接返回值?你是什么意思,当我试运行这段代码时......?它实际上应该做什么? -
他可能意味着调试,但我没有编辑它以防他意味着其他东西。 @lurker