От инициализированного указателя на массив символов, например:
char *someChar[]={"Some","Text","Here"};
Как я могу вызвать, например, букву x "Текст", я не могу перенести его адрес someChar[1]
на некоторое смещение на acces x, так как это не двумерный массив.
Использование *someChar[1][2]
дает ошибку Invalid Indirection.
Код такой же простой, как это: http://ideone.com/OdvocT
Это будет someChar[1][2]
.
someChar[1]
- это второй элемент массива, который является указателем на первую букву "Text"
.
Вы можете получить к нему доступ как someChar[1][2]
. В случае массива указателей на char
первое измерение элемента массива для строки, а второе - для выбора символа в этой строке.
for every someChar+i{
for every *(someChar+i){
code you logic here
}
}
someChar[i]
, это в точности эквивалентно *(someChar + 1)
.
В C (я понятия не имею, как все это работает в C++)
char *someChar[]={"Some","Text","Here"};
представляет собой массив указателей. Каждый элемент является указателем.
someChar[1]
- указатель. Он указывает на char
*(someChar[1])
является char
, 'T'
(также доступным как someChar[1][0]
). *(someChar[1] + 2)
является char
, 'x'
(также доступным как someChar[1][2]
).
char*
из строкового литерала.*someChar[1][2]
?