using namespace std;
void func(int R[],int len,int p)
{
int *temp = new int[len]; //若这里用int temp[10]则正确
int k = 0;
for (int i = p; i < len; i++)
{
temp[k++] = R[i]; //若这里改成temp[k],把k++单独提出来也是正确的
}
for (int i = 0; i < p; i++)
{
temp[k++] = R[i];
}
memcpy(R, temp, sizeof(temp));
}
int main()
{
int R[10] = { 1,2,3,4,5,6,7,8,9,10 };
func(R, 10, 4);
for (auto i : R)
{
cout << i << " ";
}
system("pause");
return 0;
}
希望大佬们帮忙解答一下,感谢!!!
不知道你程序要做什么
func(R, 10, 4);
因此
int *temp = new int[len];
这里len是10,temp长度10
for (int i = p; i < len; i++)
{
temp[k++] = R[i]; //若这里改成temp[k],把k++单独提出来也是正确的
}
此后,k=10
for (int i = 0; i < p; i++)
{
temp[k++] = R[i];
}
这个循环,k已经越界了。
函数void func(int R[],int len,int p):
请将
memcpy(R, temp, sizeof(temp));
改为
memcpy(R, temp, len* sizeof(int));
其中sizeof(temp)获得的是int*的字节大小。如果这样定义int temp[10],那么sizeof(temp)获得的是数组的字节大小。
以上。