gpt4 book ai didi

c - 无法理解代码

转载 作者:行者123 更新时间:2023-11-30 21:14:04 25 4
gpt4 key购买 nike

我试图编写一个代码来查找数组中的重复项并打印它们。我无法理解这段代码以及为什么使用 Calloc 并且 int 主要部分对我来说不清楚。

#include<stdio.h>
#include<stdlib.h>

void printRepeating(int arr[], int size)
{
int *count = (int *)calloc(sizeof(int), (size - 2));
int i;

printf(" Repeating elements are ");
for(i = 0; i < size; i++)
{
if(count[arr[i]] == 1)
printf(" %d ", arr[i]);
else
count[arr[i]]++;
}
}

int main()
{
int arr[] = {4, 2, 4, 5, 2, 3, 1};
int arr_size = sizeof(arr)/sizeof(arr[0]);
printRepeating(arr, arr_size);
getchar();
return 0;
}

最佳答案

该代码实际上是“危险的”,因为它依赖于某些条件来保持,例如数组中的最大整数值不大于size-2。因此,例如,如果您的输入是 int arr[] = { 114, 112, 114, 5, 2, 3, 1},则 arr[0]将为 114,并且代码 count[arr[0]]++ 将超出 printRepeating 中分配的数组的边界,即只有 5 个元素。

我会扔掉代码并编写自己的代码;几乎无论您的经验如何,您的代码可能不会比建议的代码差:-)

关于c - 无法理解代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44120346/

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