用指针将第一个数组的元素复制到第二个数组

时间:2019-06-16 03:55:23

标签: c arrays pointers

我想使用指针将第一个数组的元素复制到第二个数组  但是在编译后,我得到的消息是A问题导致程序无法正常运行。Windows将关闭该程序并在可行的情况下通知您

#include <stdio.h>
#include <stdlib.h>

int main()
{
  int arr[30],arr1[30];
  int n,i;
  int *p,*q;
  p=arr;
  q=arr1;
  printf("Enter the no. of elements of array:-\n");
  scanf("%d",&n);
  printf("Enter the array element of 1st array:-\n");
  for(i=0;i<n;i++)
  {
    scanf("%d",p+i);

  }
  for(i=0;i<n;i++)
  {
    q=(int*)*(p+i);
    q++;
  }
  printf("elements of array 1=");
  for(i=0;i<n;i++)
  {
    printf("%d , ",*(p+i));
  }
  printf("\nelements of array 2=");
  for(i=0;i<n;i++)
  {
    printf("%d , ",*(q+i));
  }
  for(i=0;i<n;i++)
  {
    printf("%d , ",arr1[i]);
  }
  return 0;
  }

1 个答案:

答案 0 :(得分:2)

更改

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

收件人

  for(i=0;i<n;i++)
  {
    q[i]=p[i];
  }

到目前为止,您将int视为int *,并将其分配给导致未定义行为的指针。

*(p+i)p[i]相同,而(p+i)&p[i]相同。但是后面的那些更具可读性。