Форум программистов, компьютерный форум CyberForum.ru

Обращение ко второму элементу массива указателей на строки - C++

Восстановить пароль Регистрация
 
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
16.12.2012, 17:31     Обращение ко второму элементу массива указателей на строки #1
Добрый день. Не получается обратиться ко второму элементу:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
 
int main(void)
{
    char **ss = {
    "Run away",
    "Peace to all",
    NULL };
    
    printf("%s", ss); // всё ОК
    //printf("%s", ???); // как обратиться ко второй строке?
    
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.12.2012, 17:31     Обращение ко второму элементу массива указателей на строки
Посмотрите здесь:

подскажите организовать обращение к элементу массива в классе! C++
Обращение к элементу массива через адрес C++
Обращение к элементу массива C++
C++ Задача Таблица. За одно обращение к каждому элементу массива необходимо каждый элемент заменить ближайшим большим следующим за ним
Обращение к элементам линейного списка через элементы массива указателей C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
21.12.2012, 14:20     Обращение ко второму элементу массива указателей на строки #2
По сути вы имеете обычный массив указателей на строки. Соответственно, и обращаться к нему можно, как к массиву. Первый элемент - ss[0] (здесь получилось, что адрес начала массива совпадает с адресом его нулевого элемента, поэтому явная индексация не понадобилась), второй элемент - ss[1], и т.д.
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
21.12.2012, 18:24  [ТС]     Обращение ко второму элементу массива указателей на строки #3
Цитата Сообщение от silent_1991 Посмотреть сообщение
По сути вы имеете обычный массив указателей на строки. Соответственно, и обращаться к нему можно, как к массиву. Первый элемент - ss[0] (здесь получилось, что адрес начала массива совпадает с адресом его нулевого элемента, поэтому явная индексация не понадобилась), второй элемент - ss[1], и т.д.
Да, но результат не оправдывает ожидания.
palva
 Аватар для palva
2372 / 1594 / 190
Регистрация: 08.06.2007
Сообщений: 6,362
Записей в блоге: 4
21.12.2012, 18:32     Обращение ко второму элементу массива указателей на строки #4
Вы неправильно инициализируете массив. Даже компиляция не проходит (на VS 2008). Вот так надо:
C++
1
2
3
4
5
6
7
    char *ss[] = {
    "Run away",
    "Peace to all",
    NULL };
    
    printf("%s", ss[0]); // всё ОК
    printf("%s", ss[1]); // как обратиться ко второй строке?
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
21.12.2012, 22:02  [ТС]     Обращение ко второму элементу массива указателей на строки #5
Странно, мне казальсь, что **ss и *s[] это одно и тоже...
palva
 Аватар для palva
2372 / 1594 / 190
Регистрация: 08.06.2007
Сообщений: 6,362
Записей в блоге: 4
21.12.2012, 22:57     Обращение ко второму элементу массива указателей на строки #6
**ss это указатель на указатель на символ. Под него выделяется память 4 байта и он инициализируется одним значением.
*s[] это массив указателей на символ. Под него выделяеся столько 4-байтовых участков, сколько вы указали иницилизирующих значений. Несколько значений можно указывать только для массива.
При обращении к данным в тексте программы это одно и то же.
silent_1991
22.12.2012, 00:41     Обращение ко второму элементу массива указателей на строки
  #7

Не по теме:

Да, что-то я это упустил... Джава на работе весь моцк съела видимо...

Yandex
Объявления
22.12.2012, 00:41     Обращение ко второму элементу массива указателей на строки
Ответ Создать тему
Опции темы

Текущее время: 23:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru