C++ c+中的反向数组指针+;
我正在尝试学习使用数组的指针。C++ c+中的反向数组指针+;,c++,arrays,pointers,C++,Arrays,Pointers,我正在尝试学习使用数组的指针。 我想使用以下功能执行此操作: int* ArrayManipulator(int* arrayPoiner, const int size) 要反转数组列表,请执行以下操作: #include <iostream> using namespace std; int* ArrayManipulator(int* arrayPoiner, const int size) { int i=0; int tt[size];
我想使用以下功能执行此操作:
int* ArrayManipulator(int* arrayPoiner, const int size)
要反转数组列表,请执行以下操作:
#include <iostream>
using namespace std;
int* ArrayManipulator(int* arrayPoiner, const int size)
{
int i=0;
int tt[size];
for (i=0;i<=size;i++)
{
cout<<arrayPoiner[size-i]<<endl;
cout<<&arrayPoiner[size-i]<<endl;
tt[i]=arrayPoiner[size-i];
}
return tt;
}
int main()
{
int t[]={1,2};
int *ReversedArray;
ReversedArray = ArrayManipulator(t,1);
int i=0;
for (i=0;i<2;i++)
{
cout<< ReversedArray[i]<<endl;
}
return 0;
}
#包括
使用名称空间std;
int*ArrayManipulator(int*arrayPoiner,const int size)
{
int i=0;
int tt[大小];
对于(i=0;i),必须返回指向已在堆上分配的数组的指针:
int **tt = new int*[size];
修改您的方法签名:
int** ArrayManipulator(int* arrayPoiner, const int size)
在堆上分配:
int **tt = new int*[size];
返回指向数组的指针
return tt;
并修改您的呼叫,以便:
int **ReversedArray = ArrayManipulator(t,1);
要做到这一点:
cout<< *ReversedArray[i];
函数ArrayManipulator不返回任何内容。因此该程序已经具有未定义的行为
我想你想要得到的是
#include <iostream>
using namespace std;
int * ArrayManipulator( const int *source, size_t n, int *dest )
{
dest = dest + n;
while ( n-- ) *--dest = *source++;
return dest;
}
int main()
{
const size_t N = 2;
int a[N] = { 1, 2 };
int b[N];
int * ReversedArray = ArrayManipulator( a, N, b );
for ( size_t i = 0; i < N; i++ )
{
cout << ReversedArray[i] << ' ';
}
cout << endl;
return 0;
}
#包括
使用名称空间std;
int*ArrayManipulator(常量int*source,大小n,int*dest)
{
dest=dest+n;
而(n--)*--dest=*source++;
返回目的地;
}
int main()
{
常数大小N=2;
int a[N]={1,2};
int b[N];
int*ReversedArray=阵列操纵器(a、N、b);
对于(大小i=0;i cout错误是什么?您的问题是什么?您应该得到SEGV,tt应该在堆上,而且您还忘记了返回指针。ArrayManipulator
返回指向堆栈上分配的数组的指针;这将调用未定义的行为。您还将数组的大小-1传递给您的函数,然后声明int tt[size]或tt[1],因此tt只有1个元素我为此绞尽脑汁-现在需要了解更多关于**指针的信息:(非常感谢您提供的时间和知识。您为什么要使用**?@Bob_uuuuOP在回答这个问题后对问题进行了一些修改。在原始版本中,他实际上使用了一个数组来指向指针。如果希望避免堆分配,这实际上是一个很好的解决方案。