gpt4 book ai didi

c - 反转数组的函数 - C

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

我写了一段代码,可以反转任何数组,意思是从头到尾,但它不适用于char类型。我将如何编写恢复任何数组(int、float、char)的代码?例如原始数组是:1,2,3,4,5,6,7,8,9,10运行后数组为:10,9,8,7,6,5,4,3,2,1

我的代码:

#include <stdio.h>

#define SIZE 10

void reverseArr ( void *arr, unsigned size);

void main ()
{

char a[SIZE] = {'a','b','c','d','e', 'f', 'g', 'h', 'i', 'j'};

reverseArr (a, SIZE);

}

void reverseArr ( void *arr, unsigned size)
{
int *start, *end, temp;

start=(int*)arr;
end=(int*)arr+9;

while (start<end)
{
temp=*start;
*start=*end;
*end=temp;
start++;
end--;
}
}

最佳答案

你投了 void指向 int 的指针指针。

在您的平台上 sizeof(char) < sizeof(int)大概。所以你不会一个字符一个字符地遍历数组。

如果不传递元素的大小,就不能编写这样的通用函数。

void reverseArr ( void *arr, unsigned len_array, unsigned size_element)
{
char* start = (char*) arr;

....
start += size_element;
....
}

sizeof(char) == 1按照设计,您可以使用指向 char 的指针遍历缓冲区.只需按照 sizeof(type) 的指示移动正确数量的字符即可.

reverseArr (a, SIZE, sizeof(a[0]));

关于c - 反转数组的函数 - C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15906965/

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