С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
xtorne21st
интересующийся
304 / 275 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
#1

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

16.12.2012, 17:31. Просмотров 574. Ответов 6
Метки нет (Все метки)

Добрый день. Не получается обратиться ко второму элементу:
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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.12.2012, 17:31
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Обращение ко второму элементу массива указателей на строки (C++):

Что быстрее? Обращение к элементу массива или к элементу структуры? - C++
Обращение к элементу массива или к элементу структуры? Экспериментирую с кодом и получается примерно одинаково. Что интересно, время на...

Обращение к элементу массива - C++
Как мне обратиться к последнему элементу массива? например: Array // i = 0 тут нужно что бы -1 был последним т.е N-1 //можно ли с...

Обращение к элементу массива - C++
Объясните пожалуйста, что происходит в строке помеченной *** void main(){ char str; char ptr; cin &gt;&gt; str; cout &lt;&lt; ...

Обращение к элементу массива из строк - C++
Здравствуйте! Имеется такой код: string mesiaci = //Massiv iz strok { &quot;Ianvar'&quot;, &quot;Fevral'&quot;, &quot;Mart&quot;, &quot;Aprel'&quot;, ...

Как присвоить второму элементу массива в функции A(), значение, которое было возвращено из функции B()? - C++
Как присвоить к второму элементу массива в функции innfunc значение 10, который вернет innfunc1? Замечание: нельзя указывать b = 10, а...

Обращение к элементу массива через адрес - C++
#include &quot;a.h&quot; #include &lt;iostream&gt; #include&lt;stdio.h&gt; using namespace std; void vvod(float mas,int n); void calc(float...

6
silent_1991
Эксперт С++
4989 / 3046 / 149
Регистрация: 11.11.2009
Сообщений: 7,028
Завершенные тесты: 1
21.12.2012, 14:20 #2
По сути вы имеете обычный массив указателей на строки. Соответственно, и обращаться к нему можно, как к массиву. Первый элемент - ss[0] (здесь получилось, что адрес начала массива совпадает с адресом его нулевого элемента, поэтому явная индексация не понадобилась), второй элемент - ss[1], и т.д.
0
xtorne21st
интересующийся
304 / 275 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
21.12.2012, 18:24  [ТС] #3
Цитата Сообщение от silent_1991 Посмотреть сообщение
По сути вы имеете обычный массив указателей на строки. Соответственно, и обращаться к нему можно, как к массиву. Первый элемент - ss[0] (здесь получилось, что адрес начала массива совпадает с адресом его нулевого элемента, поэтому явная индексация не понадобилась), второй элемент - ss[1], и т.д.
Да, но результат не оправдывает ожидания.
0
palva
2694 / 1921 / 288
Регистрация: 08.06.2007
Сообщений: 7,071
Записей в блоге: 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]); // как обратиться ко второй строке?
1
xtorne21st
интересующийся
304 / 275 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
21.12.2012, 22:02  [ТС] #5
Странно, мне казальсь, что **ss и *s[] это одно и тоже...
0
palva
2694 / 1921 / 288
Регистрация: 08.06.2007
Сообщений: 7,071
Записей в блоге: 4
21.12.2012, 22:57 #6
**ss это указатель на указатель на символ. Под него выделяется память 4 байта и он инициализируется одним значением.
*s[] это массив указателей на символ. Под него выделяеся столько 4-байтовых участков, сколько вы указали иницилизирующих значений. Несколько значений можно указывать только для массива.
При обращении к данным в тексте программы это одно и то же.
1
silent_1991
22.12.2012, 00:41     Обращение ко второму элементу массива указателей на строки
  #7

Не по теме:

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

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.12.2012, 00:41
Привет! Вот еще темы с ответами:

Организовать обращение к элементу массива в классе - C++
Есть класс: class Graf { public: double **M; double MT; Graf(){}; ~Graf(){}; Graf(int n){

Обращение к элементу динамического массива структур - C++
Само задание: http://cs412722.vk.me/v412722398/4e77/fUkq93u2HDE.jpg пока написал только это: #include &lt;iostream&gt; using namespace std;...

Не получается присвоить значение элементу массива указателей типа char *a[3] - C++
В попытках разобраться с массивами, указателями, массивами указателей и т.п. написал вот такой код: int main() { char *a = {...

Обращение к элементам линейного списка через элементы массива указателей - C++
Вот полная версия программы. Компилятор не выдаёт ошибок, но при выполнении, судя по всему, на строчке 278, при попытке обратится к...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
22.12.2012, 00:41
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.