我正在尝试使用数组指针进行选择排序。
void sort(int size, int *ptr)
{
int temp;
bool swap;
do
{
swap = false;
for (int count = 0; count < (size - 1); count++)
{
if (*ptr[count] > *ptr[count + 1])
{
temp = *ptr[count];
*ptr[count] = *ptr[count + 1];
*ptr[count + 1] = temp;
swap = true;
}
}
} while (swap);
}
我得到很多错误说非法指示因为使用*时必须是指针。我在其他方法中使用它很好它只是这个它有麻烦。这是我正在使用的电话。
sort(arraySize, numArray);
所有内容都已声明并以其他方式工作。
答案 0 :(得分:1)
使用ptr[]
代替*ptr[]
因为,
ptr
是指针,如果与[]
一起使用,则返回该位置的元素,就像数组一样。
void sort(int size, int *ptr)
{
int temp;
bool swap;
do
{
swap = false;
for (int count = 0; count < (size - 1); count++)
{
if (ptr[count] > ptr[count + 1])
{
temp = ptr[count];
ptr[count] = ptr[count + 1];
ptr[count + 1] = temp;
swap = true;
}
}
} while (swap);
}
答案 1 :(得分:0)
错误在*ptr[count]
这是指针解除引用的错误语法。
ptr[count]
或*(ptr + count)
答案 2 :(得分:0)
这里的编译错误已删除版本。
void sort(int size, int *ptr)
{
int temp;
bool swap;
do
{
swap = false;
for (int count = 0; count < (size - 1); count++)
{
if (ptr[count] > ptr[count + 1])
{
temp = ptr[count];
ptr[count] = ptr[count + 1];
ptr[count + 1] = temp;
swap = true;
}
}
} while (swap);
}
答案 3 :(得分:0)
另请阅读:C++ Using pointers for selection sort function
更多示例:http://www.codemiles.com/c-examples/c-selection-sort-t2916.html
*ptr[count]
没有任何意义
ptr
- 指针
*ptr
- 值 - 取消引用
答案 4 :(得分:0)
这是正确的结构 在使用数组的指针表示法时,不得使用*,使用指针名称时不要使用&#39; *&#39; itslef指的是指针数组的0索引
void sort(int size, int *ptr)
{
int temp;
bool swap;
do
{
swap = false;
for (int count = 0; count < (size - 1); count++)
{
if (ptr[count] > ptr[count + 1])
{
temp = ptr[count];
ptr[count] = ptr[count + 1];
ptr[count + 1] = temp;
swap = true;
}
}
} while (swap);
}