C++中的数组指针
Array Pointer in C++
int n;
int *array[8]
cout<<"Enter Number Between 0-9 Only"<<endl;
for(int i = 0; i< 9; i++){
cout << "Enter Number " << (i + 1) << endl;
cin >> n;
if((n >= 0) && (n <= 9))
array[i] = &n;
else {
cout << "Numbers from 0-9 onlyn" << endl;
i--;
}
}
cout << *array[0] << endl;
}
我正在尝试在指针数组中存储 9 个输入的数字,但它不起作用为什么?你能向我解释为什么以及如何解决或改进它吗?我只是一个初学者,这不是家庭作业,我测试我读过的东西。
行
array[i] = &n;
将在数组中的每个条目中存储相同的地址。这只是指向n
因此将始终指向该值。
将数组定义为整数数组
即 int array[9];
然后将值放入该数组中
即 array[i] = n;
或
从堆中分配一些内存
即
int *array[9];
...
array[i] = new int;
*array[i] = n;
但是,您必须使用delete
释放此内存以避免内存泄漏。
这里有几个问题。
- 您无处存储值。你有一个由 8 个指针组成的数组,这些指针都设置为指向同一个变量 n,该变量位于堆栈上,因此超出了范围。
- 数组有 8 个元素,因此循环经过一个末尾
- 这是C++所以最好不要使用 C 数组,除非你有正当的理由。
我会有更像*NB未编译和运行的东西(
{
...
std::vector<int> array;
cout<<"Enter Number Between 0-9 Only"<<endl;
for(int i = 0; i< 8; i++){
int n;
cout << "Enter Number " << (i + 1) << endl;
cin >> n;
if((n >= 0) && (n <= 9))
array.push_back(n);
else {
cout << "Numbers from 0-9 onlyn" << endl;
i--;
}
}
cout << array[0] << endl;
}
您正在数组中保存指向 n 的指针,但不断更改 n 的值。
你真的不需要在这里弄乱指针。更改数组定义、填充方式和显示方式,您应该会有更好的运气。
int array[9];
...
array[i] = n;
...
cout << array[0] << endl;
相关文章:
- 指向指向字符数组的指针数组的指针
- 通过指向指针数组的指针访问子类的属性
- C++,指针数组,指向双链表中的条目
- 在C++中,如何初始化指向wchar_t*的指针数组(生成wchar_t**)
- C++从函数指针数组调用函数
- 关于指向指针数组的指针
- 将返回值存储在函数指针数组的指针中是如何工作的?
- 将链表转换为指针数组时出错
- C++ 对象指针数组的复制构造函数
- C++ - 循环访问指针数组会导致错误
- 删除指针数组 (C++) 中的元素
- 如何循环访问 cpp 中的函数返回的字符指针数组
- 将函数指针数组中的函数指针作为模板参数传递
- Google Or-Tools Glop:如何创建指向 const 对象的指针数组?
- 具有推导参数的模板函数指针数组变量
- 如何模板化堆栈分配的多态指针数组到接口,包括派生类型的相应点?
- C++指针数组到字符数组中的特定位置
- 如何在C++中复制指针数组的数据
- 初始化类中的指针数组,并在另一个类中检索它
- 尽管直接设置了指针数组,但仍为空