gpt4 book ai didi

c - 如何取消引用作为传递给函数的数组元素的指针

转载 作者:行者123 更新时间:2023-11-30 19:15:58 24 4
gpt4 key购买 nike

所以我正在做一项家庭作业,要求我们采用一个整数数组并创建一个并行的指针数组,然后该数组将指向原始数组中的相应元素。然后,我们将指针数组按数字顺序排序,并在函数中使用冒泡排序来执行此操作。我的问题是,一旦指针数组传递给函数,如何取消引用回元素指针指向的值,以便我可以在冒泡排序中使用比较、切换值并输出排序后的数组?我是否正确地将指针数组传递给指针,或者我应该将实际数组传递给函数?目前的代码如下。

#include <stdio.h>

void sort(int *[], int);
void swapvalues(int *, int *);


int main()
{
int dataarray[] = { 0, 0, 0, 0, 123, 124, 125, 3000, 3000, 82, 876, 986, 345, 1990, 2367, 98, 2, 444, 993, 635, 283, 544, 923, 18, 543, 777, 234, 549, 864, 39, 97, 986, 986, 1, 2999, 473, 776, 9, 23, 397, 15, 822, 1927, 1438, 1937, 1956, 7, 29, -1 };
int *ptrarray[100];
int flag1 = 0;
int flag2 = 0;
int flag3 = 0;
int i = 0;
int j = 0;
int k = 0;
const int size = sizeof(dataarray) / sizeof(int);
for (i; i <= size; i++)
{
ptrarray[i] = &dataarray[i];
}
sort(ptrarray, size);




return 0;
}


void sort(int ptrarray[], int size)
{
int i = 0;
int j;
for (i; i < size; i++)
{
j = 0;
for (j; j < (size-1); j++)
{
if ((*(ptrarray + j)) == (*(ptrarray + (j + 1))))
{
swapvalues(ptrarray, j);
}
else
continue;
}
}
}

void swapvalues(int *ptrarray, int j)
{
int holder;
holder = *(ptrarray + j);
*(ptrarray + j) = *(ptrarray + (j + 1));
*(ptrarray + (j + 1)) = holder;
}

最佳答案

你应该只传入数组,而不是指向它的指针,因为 C 实际上不会复制数组,无论如何它都会使用指向它的指针。然后,要取消引用指针,您可以使用 *(ptrarray[j]),其中 j 从 0 迭代到数组的大小。执行 **(ptrarray+j) 也是有效的,它首先取消引用数组指针以获取指向的元素,然后取消引用该元素以获取原始值。

关于c - 如何取消引用作为传递给函数的数组元素的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31431786/

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