首页 > 解决方案 > c编程将数组分成两半,然后将其传递给函数

问题描述

我试图学习 c 编程,而我只是迷失了如何将我的整数数组,通过 malloc 创建的大小分成两半,并将数组的每一半传递给每个不同的函数,数组创建

为了创建大小,我使用了一个大小变量,然后要求用户输入,然后将该值传递给我的 malloc 函数。

int* ptr;
ptr =(int*)malloc(size * sizeof(int));
for (int i = 0; i < size; ++i)
{
   printf("enter a number\n");
   scanf("%d", &temp);
   ptr[i] = temp;
}

然后一旦我的数组被创建,我需要将它分成两半并将它传递给函数,但我不确定在这个阶段如何访问数组,因为我还是新的,

所以我的 ptr 变量就像一个位置持有者,或者类似于 java 中的数组的数组名称?

int[] pointername = new int[20];

我的 ptr 变量中的指针名称在哪里?只是想了解或找到我的数组参考

标签: c

解决方案


ptr指向一个连续的整数对象块,并且可以像数组一样被索引。可以获取任何元素的地址,并且该指针也可以像数组一样被索引。所以:

int* firsthalf = ptr ;
int* secondhalf = &ptr[size/2] ;

然后您可以访问firsthalf[i], secondhalf[i]

注意:

size_t firsthalf_size = size / 2 ;
size_t secondhalf_size = size - size / 2 ;

如果大小是奇数,这一点很重要,前半部分将是两者中较短的一个,并且没有边界检查。如果你想让前半部分更长,那么:

int* firsthalf = ptr ;
int* secondhalf = &ptr[size - size/2] ;
size_t firsthalf_size = size - size / 2 ;
size_t secondhalf_size = size / 2 ;

推荐阅读