我想使用指针将第一个数组的元素复制到第二个数组 但是在编译后,我得到的消息是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;
}
答案 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]
相同。但是后面的那些更具可读性。