Это расширение для моего предыдущего запроса - array of string pointers in Cсоздания 2D-массив из массива строковых указателей в C
У меня есть этот рабочий образец кода в C
int main(void)
{
char *array1 = "12345";
char *array2 = "abcde";
char *array3 = "67890";
char *array4 = "fghij";
char *array_2d[4];
array_2d[0] = array1;
array_2d[1] = array2;
array_2d[2] = array3;
array_2d[3] = array4;
int i,j;
for(i = 0; i<=3 ; i++) {
for(j = 0; j<=4 ; j++) {
printf("%c", array_2d[i][j]);
}
printf("\n");
}
}
Я хотел бы де-ссылка
*array1 to *array4
т.е.
array_2d[0] -> "12345"
....
array_2d[3] -> "fghij"
и не
array_2d[0] -> array1 -> "12345"
....
array_2d[3] -> array4 -> "fghij"
Возможно ли это? Я бы, возможно, хотели бы увеличить array_2d в [8] и сказать
array_2d[4] -> array1 -> "ABCDE"
....
array_2d[7] -> array4 -> "FGHIJ"
Я надеюсь, что это кажется очевидным ....
EDIT -
Я думаю, я получил его. Это то, что я пытался сделать.
char *array1 = "12345";
char *array2 = "abcde";
char *array3 = "67890";
char *array4 = "fghij";
char *array_2d[8];
array_2d[0] = array1;
array_2d[1] = array2;
array_2d[2] = array3;
array_2d[3] = array4;
array1 = "AAAAA";
array2 = "BBBBB";
array3 = "CCCCC";
array4 = "DDDDD";
array_2d[4] = array1;
array_2d[5] = array2;
array_2d[6] = array3;
array_2d[7] = array4;
Я не понимаю, о чем вы просите. 'array_2d' вообще не является двумерным массивом - это 1D массив указателей. Что означает ваша нотация 'array_2d [0] -> array1 ->" 12345 "'? –
Теперь ваша ситуация - array_2d [0] -> "12345", а не array_2d [0] -> array1 -> "12345". Таким образом, вы достигли именно того, чего хотите. –
Я хотел бы, чтобы array_2d [0] копировал «12345» из массива1, поэтому я могу очистить массив1 и сохранить (указать) «ABCDE», а затем массив_2d [4] копирует «ABCDE» из массива1. – Sid5427