Это практический вопрос из моего финала по кодированию.
#include <stdio.h>
#define N 3
// a structure type for storing an array.
typedef struct
{
int *ptrData;
int length;
} ARRAY;
void printArray(ARRAY A)
{
int i;
printf("Array Content:\n");
for (i=0; i<A.length; i++)
{
printf("%d\n", A.ptrData[i]);
}
}
int main()
{
int x[N]={1, 3, 5};
ARRAY array1;
ARRAY array2;
array1.ptrData=x;
array1.length=N;
array2=array1;
array1.ptrData[0]=10;
printArray(array1);
printArray(array2);
return 0;
}
Вывод
Array Content:
10
3
5
Array Content:
10
3
5
У меня проблемы с пониманием, почему вывод для array2
такой же, как array1
. Я понимаю, как они получили значения для array1
, но не уверен, что для array2
, поскольку, насколько я понимаю, первый элемент array1
был изменен на 10 после объявления array1 = array2
, но из вывода это выглядит как * Для первого элемента 1013 * также было установлено значение 10.
Если вы хотите пояснить, почему вывод array2
совпадает с array1
.