Вы не можете назначить массив нескольким переменным, но вы можете назначить несколько переменных, чтобы указывать на массив.
Все указатели - это память и память, на которую они указывают .
Такие операторы присваивают переменной myArray
фиксированный объем памяти (байты памяти размером 10 char
) и инициализируют содержимое, содержащее «test1».
char myArray[10] = "test1";
По определению myArray
фактически является указателем на первую ячейку памяти, которая в этом случае содержит символ со значением 't'
, но он фиксируется в этой памяти.
Вы можете определить другой указатель для типа char и присвоить ему то же значение, что и указатель на память, в которой хранятся данные "test1"
- таким образом:
char *secondPtr = myArray;
Теперь secondPtr
и myArray
оба указывают на та же память, которая содержит "test1"
. Существует не две копии данных, но это может выглядеть так, если вы сделали
printf("myArray %s", myArray);
printf("secondPtr %s", secondPtr);
Теперь вы можете использовать либо myArray
, либо secondPtr
для изменения тех же данных, поэтому указатели должны относиться с осторожностью.
Теперь, поскольку secondPtr - это просто указатель на символ и поэтому он не фиксируется так же, как myArray, вы можете сделать это:
char myArray2[10] = "test2";
secondPtr = myArray;
printf("secondPtr %s", secondPtr);
secondPtr = myArray2;
printf("secondPtr %s", secondPtr);
Чтобы скопировать данные из одного массива в другой вы можете использовать memcpy, который будет копировать определенное количество байтов (октетов) памяти из одного места в другое.
Тот же процесс выполняется al oop (это основа * Код 1043 *, но на самом деле это не лучший способ его выполнения, поскольку нет проверки ни размера массивов, ни количества l oop итераций), например
for(int i=0; i<10; i++)
{
myArray2[i] = myArray[i];
}
, это также может быть:
secondPtr = myArray2;
for(int i=0; i<10; i++)
{
myArray2[i] = secondPtr +i;
}