gpt4 book ai didi

c++ - 无法理解指针机制

转载 作者:行者123 更新时间:2023-11-28 06:31:43 25 4
gpt4 key购买 nike

为什么下面的程序崩溃了?我尝试调试代码但无法理解;我怀疑要么是程序错误,要么是传递给 display 函数的指针的内存应该已经初始化。

#include <iostream>
using namespace std;

int display( int** intarray )
{
int size = 0;
while( size < 10 )
{
*intarray[size] = size;
size++;
}

return size;
}

int main() {
int* intptrarray;
int arraysize = 0;
arraysize = display( &intptrarray );

for ( int indx = 0; indx < arraysize; indx++ )
{
std::cout << intptrarray[indx] << std::endl;
}
return 0;
}

最佳答案

当一个指针被声明时,它并不指向任何特定的内存地址。要让它指向某处,您需要按如下方式为其分配内存:

#include <iostream>
using namespace std;

int display( int** intarray, int arraysize )
{
int size = 0;
while( size < arraysize )
{
(*intarray)[size] = size;
size++;
}

return size;
}

int main() {
int arraysize = 10;
int* intptrarray = new int[arraysize];

arraysize = display( &intptrarray, arraysize );

for ( int indx = 0; indx < arraysize; indx++ )
{
std::cout << intptrarray[indx] << std::endl;
}

delete[] intptrarray;
return 0;
}

每当你分配内存时,你需要记住自己释放它(删除单个变量,删除[]数组)。

关于c++ - 无法理解指针机制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27414621/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com