繁体   English   中英

如何使用指针在C中合并两个数组

[英]How to merge two arrays in C using pointers

我知道如何将一个数组插入指针数组。 但是我无法将数组合并为指针数组...请任何人都可以通过合并两个数组来帮助我创建一个指针数组....

#include<stdio.h>

int main(){

    int n,m,i,A[100],B[100], *C;

    printf("Enter size of A Array: \n");

    scanf("%d",&n);

    printf("Enter elements for A array: \n");

    for (i=0;i<n;i++)
    {
        scanf("%d",&A[i]);
        C++;
    }   
    C=&A[0];
    printf("\n Element in array are :\n");
    for(i=0;i<n;i++)
    {
        printf("\t%d",(*C));
        C++;
    }
    printf("Enter size of B Array: \n");

    scanf("%d",&m);

    printf("Enter elements for B array: \n");

    for (i=0;i<m;i++)

    {
        scanf("%d",&B[i]);
        C++;
    }   
    C=&B[0];
    printf("\n Element in array are :\n");
    for(i=0;i<m;i++)
    {
        printf("\t%d",(*C));
        C++;
    }
return 0;
}

如果要合并两个arrays ,只需将两个array元素复制到一个数组中即可,可以使用指针编写一个简单的代码:

int main(){

int n,m,i,*A,*B,size=100;

A=malloc(size*sizeof(int));
B=malloc(size*sizeof(int));

printf("Enter size of A Array: \n");
scanf("%d",&n);

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

printf("Enter size of B Array: \n");
scanf("%d",&m);

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

for(i=n;i<n+m;i++){
   if(i>=size){
   size*=2;
   A=realloc(A,size*sizeof(int));
   A[i]=B[i];
   }
} 
printf("\n Element in array are :\n");
for(i=0;i<m+n;i++)
{
    printf("\t%d",(*A));
    C++;
}
return 0;
} 

我认为在这种情况下不会使用单指针,如果您初始化第一个数组(以 3 个元素 1,2,3 为例),然后您必须将其初始化到第一个数组的第一个位置,则使用单指针打印序列,然后使用第二个数组(3 个元素 4,5,6){在第一个 for 循环之后 :: C=&B[0]} 所以在第一个 for 循环中我增加了 C 指针,然后在该循​​环之后这意味着下一个 C 位置我已将指针设置为 C=&B[0] 然后对 B 数组执行相同操作并将指针设置为初始位置并打印它给出的第一棵树值和一些垃圾值的值( A 数组的剩余部分它没有转到 B 数组地址 idk 为什么)所以我使用了指针数组

#include<stdio.h>
int main(){
int n,m,i,j,A[100],B[100], *C[100];
printf("Enter size of A Array: \n");
scanf("%d",&n);
printf("Enter elements for A array: \n");
for (i=0;i<n;i++)
{
    scanf("%d",(A+i));
    *(C+i)=A+i;

} 
printf("Enter size of B Array: \n");
scanf("%d",&m);
printf("Enter elements for B array: \n");
for (j=0;j<m;j++)
{
    scanf("%d",(B+j));
    *(C+i+j)=B+j;
}   
for (i=0;i<(n+m);i++){
printf("%d\t",*(C[i]));
}
return 0;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM