gpt4 book ai didi

c++ - 无法让我的指针发送对数组的引用

转载 作者:行者123 更新时间:2023-11-28 06:20:28 26 4
gpt4 key购买 nike

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

int* getEvenNumbers(int arr[], int N)
{
int i, k = 0 , a[50], p;
for (i = 0; i < N; i++)
{
if (arr[i] % 2 == 0)
{
arr[k]=arr[i];
k++;
}
}

return arr[k];
}



int main ()
{
int i, arr[5000000], N, a[500000], k, *p;

printf("\nEnter your desired length of the array:\n\n");
scanf("%d", &N);

for (i = 0; i < N; i++)
arr[i]= rand();

getEvenNumbers (arr, N);

printf("\n\nEven numbers in the array are as follows:\n\n");
for (i = 0; i < N; i++)
{
a[i]= *(p+i);
printf("\n[%d] = %d", (i+1), a[i]);
}
}

我知道这对你们来说可能很容易,但我需要帮助弄清楚如何在不删除我的数组的所有值的情况下返回指向数组的指针,而且我不能使用全局变量,它必须是一个返回指向数组的指针的函数

最佳答案

首先,减少那些数组的大小,你不需要那么多空间。其次,你做了你的

getEvenNumbers

函数返回一个int *,而不是一个intarr[k] 不是 int *。如果调用函数时没有分配任何内容,我也不明白为什么要返回一些东西。您只需将返回类型更改为 void

void getEvenNumbers(int arr[], int N)

您也永远不会为 p 分配任何内存。你可以做

p = (int*) malloc(sizeof(int));

并且由于您从未为 p 分配任何内存,因此以下代码行

a[i]= *(p+i);

正在将 a[i] 分配给一个随机地址。你应该试着重写这个程序。这个程序中有很多错误,我什至都没有改正。在 Google 上查找finding even numbers in array program 或类似的东西,然后查看这些示例的代码。

编辑:

我找到了一些代码示例供您使用。希望对您有所帮助!

StackOverflow

sanfoundry.com

关于c++ - 无法让我的指针发送对数组的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29381901/

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