我从字面上重新编写了工作中的代码。有人可以告诉我为什么“(int)tablica”不起作用而“ tablica”却起作用吗?
#include <iostream>
using namespace std;
int ile;
int main()
{
cout<<"ile liczb w tablicy: "<<endl;
cin>>ile;
int *tablica;
tablica = new int [ile];
for(int i=0; i<ile; i++)
{
cout<<(int)tablica<<endl;
tablica++;
}
delete [] tablica;
return 0;
}
我在工作并且没有适当的IDE,所以我使用https://www.onlinegdb.com/online_c++_compiler
答案 0 :(得分:0)
解决方案取决于您要实现的目标。
如果要打印数组中的所有数字,则不应尝试使用C样式将指针强制转换为int类型的对象。您只需要以cout<<*tablica<<endl;
的方式解除对指针的引用。
如果要打印数组元素的地址,则根本不需要执行任何操作,只需打印它们cout<<tablica<<endl;
在两种情况下,正如注释中所注意的nm一样,您应该存储另一个指针以删除数组,因为您修改了现有数组,并且在循环结束时tablica
并不指向开头数组。
int *tablica;
tablica = new int [ile];
int *originalPointer = tablica;
... increment and decrement tablica poitner so many times as you want ...
delete[] originalPointer;