我有一个函数,我将一个数组传递给我的主函数,并将一个 int 传递给我的主函数。我正在对这个新函数中的数组进行操作,我们称之为 foo。在 foo 中,我用 0 初始化另一个包含 52 个单元格的数组。我对从 main 传递的数组执行操作,并将该数据传输到新初始化的数组。我想将新数组返回给主函数。但当然,我不能返回像数组这样的数据结构。所以我改为返回一个指向该数组的 int 指针。在 int main 内部,我传递指针以使其指向数组中的各个单元格。当我打印指针指向的结果时,它应该指向 0 或大于 0 的整数。但是,我得到的结果不一致。出于某种原因,一些应该为 0 的值会打印出垃圾数据。我' 一段时间以来一直试图发现这个错误,但我只是想看看它。无论如何,这只是这部分代码的一般想法......
int main(){
int *retPtr;
char input[] = "abaecedg";
retPtr = foo(input, size);
for(i=0; i<52; i++){
// error displayed here
printf("%d\n", *(retPr + i));
}
}
int foo(char input[], int size)
{
int arr[52] = {0}; // should initialize all 52 cells with 0.
int i=0, value; // looking for non-zero results in the end.
int *ptr = &arr[0];
for(i=0; i<size; i++){
if(arr[i] > 64 && arr[i] < 91){
value = input[i] - 65;
arr[value]++;
}
}
return ptr;
}
希望这对我正在尝试做的事情有意义。在 foo 函数中,我试图找到某些字母的频率。我知道这可能有点神秘,但是代码很长,带有注释和所有内容,所以我想让它尽可能简洁。有什么可能的原因让我得到一些(数字> 0、0)的正确值和另一个垃圾值?