我已经知道一个存储类允许局部变量在程序的持续时间上保持现有的存储类别static
。为什么需要在从函数返回数组时声明一个数组为static。 (C++)
我想知道为什么需要声明digits[3]
数组为静态。如果我没有声明它是静态的,除了编译错误,会发生什么。
P.S.我在处理C++中的指针或内存地址方面很新颖。
虽然我对C++中有关作用域的堆栈内存分配有点想法。
int* getDigits(int input)
{
const int TEN = 10;
int toStore;
int digits[3]; /* this array (static) */
for (int i = 0; i < 3; ++i)
{
toStore = input % TEN;
digits[i] = toStore;
input = input/TEN;
}
return digits;
}
int main(int argc, char const *argv[])
{
int* ptr;
ptr = getDigits(123);
for (int i = 0; i < 3; ++i)
{
std::cout << *(ptr+i) << std::endl;
}
return 0;
}
1.将所有代码作为文本发布。代码图像几乎没有用处。 2.你为什么认为它需要是静态的? – Carcigenicate
你应该使用'std :: vector'或'std :: array'。如果你不声明它是静态的,当函数返回并且你返回的指针是悬空的(即在函数外面没用)时,它将会消失。 – user463035818