gpt4 book ai didi

c - 使用指针从 C 中的函数调用数组元素

转载 作者:太空宇宙 更新时间:2023-11-04 07:57:14 25 4
gpt4 key购买 nike

我正在尝试编写移动和切换数组前三个元素的代码。 main函数获取数组长度和元素,然后显示函数调用的结果。函数 roll 从数组 a1 中获取元素,移动前三个元素,然后将它们存储到数组 a2 中。我必须使用指针下标并且函数中不能有 []。我必须使用这个原型(prototype):

void roll(int *a1, int n, int *a2)

这是我编写的代码。我一定没有正确调用函数,或者函数没有正确地将元素分配到数组 a2 中,因为我只得到 0 输出。

#include <stdio.h>

void roll(int *a1, int n, int *a2)
{
int *p, *q;
q = a2;

for(p = a1; p < a1 + n; p++)
*p = *(p+2);
*(p+1) = *p;
*(p+2) = *(p+1);
*q = *p;
}

int main(void)
{
int i, x;

printf("Enter the length of the array:\n");
scanf("%d", &x);
int a[x];
int b[x];
// int new_arr[x];

printf("Enter the elements of the array:\n");
for(i = 0; i < x; i++)
scanf("%d", &a[i]);

roll(a, x, b);
printf("The output array is:");
// for(i = 0; i < x; i++);
printf("%d", *b);

return 0;
}

最佳答案

检查这是否是您想要的。

#include <stdio.h>

void roll(int *a1, int n, int *a2)
{
int *p, *q;
q = a2;
p = a1;

int temp=*p;
*p = *(p+2);
*(p+2)=*(p+1);
*(p+1)=temp;

for(int i=0;i<n;i++)
{
*(a2+i)=*(p+i);

}


}

int main(void)
{
int i, x;

printf("Enter the length of the array:\n");
scanf("%d", &x);
int a[x];
int b[x];
// int new_arr[x];
printf("Enter the elements of the array:\n");
for(i = 0; i < x; i++)
{
scanf("%d", &a[i]);
b[i]=a[i];
}
roll(a, x, b);

for(i = 0; i < x; i++)
printf("%d\n", *(b+i));

return 0;

关于c - 使用指针从 C 中的函数调用数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49186506/

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