C++ C++;整数数组指针上的程序行为
谁能解释一下为什么循环只执行一次 for循环执行一次,永远不会到达程序的末尾 如果你有时间回顾我的错误,那么请指出错误,因为我知道这不是怎么做到的C++ C++;整数数组指针上的程序行为,c++,for-loop,pointers,C++,For Loop,Pointers,谁能解释一下为什么循环只执行一次 for循环执行一次,永远不会到达程序的末尾 如果你有时间回顾我的错误,那么请指出错误,因为我知道这不是怎么做到的 using namespace std; #include<iostream> int* rotate(int* ar,int d,int n) { int tmp[n]; d = d%n; for (int i = 0; i < n; ++i) { tmp[i] = ar[(i+
using namespace std;
#include<iostream>
int* rotate(int* ar,int d,int n)
{
int tmp[n];
d = d%n;
for (int i = 0; i < n; ++i)
{
tmp[i] = ar[(i+d)%n];
}
free(ar);
return tmp;
}
int main(int argc, char const *argv[])
{
int arr[] = {1,2,3,4,5};
int *a;
int n = sizeof(arr)/sizeof(arr[0]);
a = rotate(arr,4,n);
cout<<endl;
for (int i = 0; i < n; ++i)
{
cout<<i<<endl;
cout<<a[i]<<endl;
}
cout<<"End";
return 0;
}
使用名称空间std;
#包括
整数*旋转(整数*ar、整数d、整数n)
{
int-tmp[n];
d=d%n;
对于(int i=0;i
int* rotate(int* ar,int d,int n)
{
int tmp[n]; // 1
d = d%n;
for (int i = 0; i < n; ++i)
{
tmp[i] = ar[(i+d)%n];
}
free(ar); // 2
return tmp; // 3
}
这就是使用std::rotate
执行相同操作的方法:
#include <array>
#include <iostream>
#include <algorithm>
int main(int argc, char const *argv[])
{
int arr[] = {1,2,3,4,5};
int n = sizeof(arr)/sizeof(arr[0]);
std::rotate(std::begin(arr),std::begin(arr)+4,std::end(arr));
for (int i = 0; i < n; ++i)
{
std::cout << i << std::endl;
std::cout << arr[i] << std::endl;
}
std::cout<<"End";
}
#包括
#包括
#包括
int main(int argc,char const*argv[]
{
int arr[]={1,2,3,4,5};
int n=sizeof(arr)/sizeof(arr[0]);
标准::旋转(标准::开始(arr),标准::开始(arr)+4,标准::结束(arr));
对于(int i=0;i Std::Cuff> <代码>(Ar);< /COD>是坏的,因为未通过“代码> MARROCKE”(/Calp>家族)分配的东西。使用<代码> MARROCKE()/<代码>和()(代码)>在C++中不是正确的方式。<代码> FAL(AR);< /代码>未使用<代码> MARROCK()的数组。?为什么要开始做这件事?我想这是一个练习,但是考虑有<代码> STD::vector < /代码> />代码:STD::数组< /COD>和<代码> STD::旋转,它可以在大致2-3中完成同样的操作。lines@idclev463035818是的,我可以用vector来做,但我只是把我的指针知识弄乱了!!inttmp[n]< /代码> NoooooooThanks解释了所有这些解释……是的,比这更好的代码可以写……但是我的C++知识并不是那么回事!!@ NISH13你不同意使用<代码> STD::旋转< /代码>的代码比手写算法简单得多吗?是的,我完全同意它更简单,更有效。(你建议的代码)。但我只是想在这方面做更多的探索(我写的代码)!!谢谢你像这样与我周旋:)其他人甚至懒得回答
#include <array>
#include <iostream>
#include <algorithm>
int main(int argc, char const *argv[])
{
int arr[] = {1,2,3,4,5};
int n = sizeof(arr)/sizeof(arr[0]);
std::rotate(std::begin(arr),std::begin(arr)+4,std::end(arr));
for (int i = 0; i < n; ++i)
{
std::cout << i << std::endl;
std::cout << arr[i] << std::endl;
}
std::cout<<"End";
}