gpt4 book ai didi

c++ - 按引用对数组进行排序

转载 作者:太空宇宙 更新时间:2023-11-04 15:25:46 26 4
gpt4 key购买 nike

我做了一个简单的例程来排序一个数组女巫接受一个整数数组作为参数问题是当我比较值时数组 [i] 在调试器中显示正确的值但是数组 [i + 1] 显示一个虚假值...我猜是一个指针问题,但我无法弄清楚我做错了什么。

代码如下:

typedef int vector[10];

void task1(vector * param)
{
bool ordered = false;
while (!(ordered))
{
int tmp = 0;
ordered = true;
for (int i = 0; i < 9 ; i++)
{
if (*param[i] > *param[i+1])
{
tmp = *param[i];
*param[i] = *param[i + 1];
*param[i + 1] = tmp;
ordered = false;
}
}
}

}

int _tmain(int argc, _TCHAR* argv[])
{
vector tavi = {10,88,77,192,7,27,82,1,882,13};

task1(&tavi);
for (int i = 0 ; i < 10 ; i ++)
printf("%d ",tavi[i]);

_getch();


return 0;
}

最佳答案

下标运算符 ([]) 的优先级高于解引用运算符 (*),所以 *param[i] 实际上是 *(param[i])。这意味着,您首先转到 param 的第 i 个元素,然后取消引用它 - 这不是您想要的(param 不是指向数组的指针) .您想要取消引用 param然后转到第 i 个元素 - 这将是 (*param)[i]

关于c++ - 按引用对数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8809435/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com