gpt4 book ai didi

c - 在c中将数组划分为子数组

转载 作者:行者123 更新时间:2023-11-30 17:03:16 25 4
gpt4 key购买 nike

void update(char array[]){
int i,j;
for(i = 0;i<NUM_OF_SUBARRAYS;i++){
char *subarray = array+(SUBARRAY_SIZE*i);
for(j = 0;j<SUBARRAY_SIZE;j++){
subarray[j]='d';
}
//print_array(subarray);
}
}

问题:将数组划分为NUM_OF_SUBARRAYS,并让它们在单个处理程序(. ..然后在多进程程序中比较结果)

所以,这是我第一次尝试在单进程程序中解决这个问题。如果我这样做,是不是效率很低,因为每个子数组都足够长?

例如,

ARRAY_SIZE=10

NUM_OF_SUBARRAYS=2

现在,每个子数组都有 10 个元素,但实际上 2 个就足够了。考虑到所需的 ARRAY_SIZE 是 5M,这不是一个问题吗?如果是,我该怎么办?我有点迷失在这里,所以如果您能向我简要解释一下,我将不胜感激。

最佳答案

我想您的意思是 SUBARRAY_SIZE 而不是 ARRAY_SIZE

您认为 2 个就足够了,因为只有 d\0 作为不同的元素。好吧,这不是练习的重点。它可能更多地是通过数组来处理指针算术。

这个想法是将数组划分为将终止字符放在需要的位置并初始化它。这正是您在尝试中所缺少的。

这是一种方法:

#include <stdio.h>

#define NUM_OF_SUBARRAYS 2
#define SUBARRAY_SIZE 10

void update(char array[])
{
int i,j;

for(i = 0; i < NUM_OF_SUBARRAYS; i++) {
char *subarray = array + (SUBARRAY_SIZE*i);

for(j = 0; j < SUBARRAY_SIZE; j++){
subarray[j]='d';
}
subarray[SUBARRAY_SIZE] = '\0'; /* POINT OF THE EXERCISE */
printf("%d. %s", i, subarray);
}
}

int main(void)
{
char arr[21];

update(arr);

return 0;
}

如果您不终止它,则至少以后无法打印出来。 printf 中的格式说明符 s 精确搜索 \0 即可停止。请记住,当它没有声明为数组时,您需要为指针动态分配内存,然后检查它。对于子数组,否,因为它使用数组地址作为基址。

关于c - 在c中将数组划分为子数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36233782/

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