数组指针表示法C++(移动数组时)



我写了这段代码, 这应该将我的数组移动 1:

// Declare and initialize Array
int temp;
int dim[5] = { 6, 7, 8, 9, 10 };

int array_size = sizeof(dim) / sizeof(dim[0]);
cout << "Array-Size: " << dim[array_size - 1] << endl;
// Move by 1 position
for (int i = 0; i < (array_size - 1); i++)
{
temp = dim[array_size - 1];
dim[array_size - 1] = dim[i];
dim[i] = temp;
}
// Console Output
for (int i = 0; i < array_size; i++)
{
cout << dim[i] << ' ';
}

一切正常,但我想将其更改为指针符号。我已经尝试了很多东西,但是当我将数组更改为指针符号时,我得到了一个奇怪的输出。首先,是否可以将代码更改为指针表示法,其次,如果是这样,我应该怎么做? 如有任何建议,我将不胜感激。谢谢!

dim[i]*(dim + i)的句法糖。您可以将所有数组表示法替换为等效的指针表示法。

// Declare and initialize Array
int temp;
int dim[5] = { 6, 7, 8, 9, 10 };

int array_size = sizeof(dim) / sizeof(dim[0]);
cout << "Array-Size: " << *(dim + array_size - 1) << endl;
// Move by 1 position
for (int i = 0; i < (array_size - 1); i++)
{
temp = *(dim + array_size - 1);
*(dim + array_size - 1) = *(dim + i);
*(dim + i) = temp;
}
// Console Output
for (int i = 0; i < array_size; i++)
{
cout << *(dim + i) << ' ';
}

使用动态内存分配:

// Declare and initialize Array
int temp;
int array_size = 5;
int *dim = new int[array_size]{ 6, 7, 8, 9, 10 };
cout << "Array-Size: " << *(dim + array_size - 1) << endl;
// Move by 1 position
for (int i = 0; i < (array_size - 1); i++)
{
temp = *(dim + array_size - 1);
*(dim + array_size - 1) = *(dim + i);
*(dim + i) = temp;
}
// Console Output
for (int i = 0; i < array_size; i++)
{
cout << *(dim + i) << ' ';
}
delete[] dim;

在 for 循环中使用动态内存分配和指针:

// Declare and initialize Array
int temp;
int array_size = 5;
int *dim = new int[array_size]{ 6, 7, 8, 9, 10 };
cout << "Array-Size: " << *(dim + array_size - 1) << endl;
// Move by 1 position
for (int *ptr = dim; ptr < (dim + array_size - 1); ++ptr)
{
temp = *(dim + array_size - 1);
*(dim + array_size - 1) = *ptr;
*ptr = temp;
}
// Console Output
for (int *ptr = dim; ptr < dim + array_size; ++ptr)
{
cout << *ptr << ' ';
}
delete[] dim;