C / C ++: доступ к одному символу из одноразмерного массива указателя

0

От инициализированного указателя на массив символов, например:

char *someChar[]={"Some","Text","Here"};

Как я могу вызвать, например, букву x "Текст", я не могу перенести его адрес someChar[1] на некоторое смещение на acces x, так как это не двумерный массив.

Использование *someChar[1][2] дает ошибку Invalid Indirection.
Код такой же простой, как это: http://ideone.com/OdvocT

  • 0
    Это больше не будет компилироваться. Вы не можете инициализировать char* из строкового литерала.
  • 0
    Кто-нибудь говорит использовать *someChar[1][2] ?
Показать ещё 1 комментарий
Теги:

4 ответа

3
Лучший ответ

Это будет someChar[1][2].

someChar[1] - это второй элемент массива, который является указателем на первую букву "Text".

  • 0
    Дает неверную ошибку косвенного обращения
  • 0
    Где оператор косвенности в этом ответе?
3

Вы можете получить к нему доступ как someChar[1][2]. В случае массива указателей на char первое измерение элемента массива для строки, а второе - для выбора символа в этой строке.

  • 0
    Дает неверную ошибку косвенного обращения
  • 0
    Что ты сделал на самом деле?
Показать ещё 3 комментария
0
for every someChar+i{
    for every *(someChar+i){
        code you logic here
    }
}
  • 0
    Используйте someChar[i] , это в точности эквивалентно *(someChar + 1) .
  • 0
    это ошибка, поэтому он должен просматривать j = 0 для каждого (someChar + i) + j
Показать ещё 1 комментарий
0

В 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]).

  • 0
    Дает неверную ошибку косвенного обращения
  • 0
    @Yawz: это должно быть особенностью C ++. Я не знаю C ++; мой ответ относится к C (примечание добавлено к самому ответу).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню