gpt4 book ai didi

调用使用指针接收数组的函数

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

所以我有这个:

int main()
{
int workers;
printf("How many workers are there?\n");
scanf("%d", &workers);
printf("What are their preferences?\n");
int *pref = malloc(workers * sizeof(int));
if (pref == NULL)
return -1;

fillPreferences(pref, workers);

return 0;
}

我现在想在此函数中填充“pref”二维数组:

void fillPreferences(int pref[][], int size)
{
for (int i=0;i<size;i++)
{
for (int j=0;j<size;j++)
{
scanf(" %d", &pref[i][j]);
}
}
}

它不起作用,可能是因为我使用了错误的指针。如何使用 malloc,然后调用函数并通过执行 pref[i][j] 接收二维数组中的值? (请注意,我不想做类似 scanf(..., &pref+i) 之类的事情。我需要实际使用该二维数组。
谢谢:)

最佳答案

当你写a[i]时,它会变成*(a+i)。也就是说,a[i]通过a+i地址访问内存(好吧,它甚至是a+i*sizeof(element) )。

因此,a[i][j] 表示 *(*(a+i)+j)两次内存访问。为此,您的 a 应该是数组的数组。也就是说,您需要首先malloc其元素,然后malloc内存来保存它们。

就您的具体情况而言,我怀疑您是否需要它。您需要的是将其设为一维数组(已经是它了)并以您希望的任何方式从两个索引计算索引。

关于调用使用指针接收数组的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34828895/

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