скопировать элемент первого массива во второй массив с указателем - PullRequest
0 голосов
/ 16 июня 2019

Я хочу скопировать элемент первого массива во второй массив с указателем, но после компиляции я получаю сообщение, что проблема вызвала сбой в работе программы. 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 Ответ

2 голосов
/ 16 июня 2019

Изменить

  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].Но последние более читабельны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...