c - 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 变量中的指针名称在哪里?只是想了解或找到我的数组参考
解决方案
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 ;
推荐阅读
- android - 编写这个简单的 sqlite rawquery 的正确方法是什么?
- angular - 将 http 调用数据传输到堆肥子
- go - 程序使用等待组进入死锁
- bash - 将包含空格的变量传递给bash中的命令
- r - 如何根据R中的最后一个字符对字符串向量进行排序
- css - 设置div的内容位置
- json - 如何添加功能以一次将多个记录更新到 json 从角度
- javascript - 将多个数组的索引加在一起
- c# - 在 c#.net Windows 应用程序中为重叠的图像/面板提供闪烁效果
- python - 如何通过 holoviz 和 NetworkX 渲染 GraphViz Dot 文件?