Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.07.2013, 23:51   #1
Pillowo47
 
Регистрация: 02.07.2013
Сообщений: 5
Вопрос Указатели на массивы символов

Всем доброго времени суток
Я пробовал гуглить, нашел много статей на тему массивов и указателей, но так ничего и не могу понять. Понимаю что например
Код:
char text[50];
я создаю переменную text типа char с размером 50(49 без '\0'). Знаю что
Код:
char* text[50];
(строка может быть неверной, знаю неточно) это массив указателей. Но для чего он нужен? Как его использовать и зачем? Очень хочу разобраться во всем(ибо отец тоже программистом был).Я уже второй месяц успешно изучаю программирование по книге Либерти С++ за 21 день. Но тема указателей для меня довольна сложна... Пожалуйста, приведите примеры и отличия (если можно).
Pillowo47 вне форума Ответить с цитированием
Старый 03.07.2013, 00:03   #2
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от Pillowo47 Посмотреть сообщение
Код:
char text[50];
я создаю переменную text типа char с размером 50(49 без '\0').
Не правильно. Ты создаешь 50 штук объектов типа char в непрерывном блоке памяти.

Переменная типа char[50] имеющая имя text ассоциирована с непрерывным блоком памяти, в котором можно разместить 50 элементов типа char.
При этом, если бы это был массив пользовательского типа (хранил бы экземпляры класса), то в месте создания такого массива компилятор бы сгенерировал код запуска всех 50 конструкторов этих объектов.

Цитата:
Сообщение от Pillowo47 Посмотреть сообщение
Код:
char* text[50];
(строка может быть неверной, знаю неточно) это массив указателей. Но для чего он нужен?
Как его использовать и зачем?
Что бы хранить кучку указателей, очевидно жеж.

Тебе стоит подучить тему "что такое массив на языке с++". Тему "указатели на языке с++", и тему "массив указателей на языке с++"

Пример-иллюстрация разницы между массивом указателей и просто массивом.
http://ideone.com/oAihRi

Последний раз редактировалось _Bers; 03.07.2013 в 00:09.
_Bers вне форума Ответить с цитированием
Старый 03.07.2013, 00:09   #3
Pillowo47
 
Регистрация: 02.07.2013
Сообщений: 5
По умолчанию

Что я тогда объявляю?
Код:
char text[50];
огромное спасибо на указание тем Буду читать. За ссылку тоже )
Pillowo47 вне форума Ответить с цитированием
Старый 03.07.2013, 00:16   #4
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от Pillowo47 Посмотреть сообщение
Что я тогда объявляю?
Код:
char text[50];
огромное спасибо на указание тем Буду читать. За ссылку тоже )
представь себе переменную типа char:

Код:
char value = 'a';
представил? Вот теперь представь себе, что ты объявил не одну, а 50 таких переменных:

Код:
char value[50] = { 'a', 'b', 'c' ,...  и так все 50 штук };
Само слово "массив" как бы намекает: множество объектов объединенных в одну группу.
_Bers вне форума Ответить с цитированием
Старый 03.07.2013, 00:22   #5
Pillowo47
 
Регистрация: 02.07.2013
Сообщений: 5
По умолчанию

Воот, теперь понятно) спасибо) а
Код:
char* value[50];
тогда чем отличается?
Pillowo47 вне форума Ответить с цитированием
Старый 03.07.2013, 00:45   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от Pillowo47 Посмотреть сообщение
Воот, теперь понятно) спасибо) а
Код:
char* value[50];
тогда чем отличается?
тип переменной другой, создаете 50 указателей.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 03.07.2013, 14:16   #7
Igor95
Форумчанин
 
Регистрация: 03.01.2013
Сообщений: 388
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
тип переменной другой, создаете 50 указателей.
которые хранят адреса переменных типа char*.
Igor95 вне форума Ответить с цитированием
Старый 03.07.2013, 14:25   #8
Shad0wF1rst
Форумчанин
 
Регистрация: 11.01.2013
Сообщений: 149
По умолчанию

Цитата:
Сообщение от Pillowo47 Посмотреть сообщение
Знаю что
Код:
char* text[50];
(строка может быть неверной, знаю неточно) это массив указателей. Но для чего он нужен? Как его использовать и зачем?
Массив указателей нужен например для создания динамического двумерного массива, типа:
Код:
char *text[50];
for (int i = 0; i < 50; i++) {
    text[i] = new char [50];
}
Это конечно делается не так. Гибрид получился, но тоже имеет право на существование.

А так динамический двумерный массив строится так:
Код:
char **text = new char [50];
for (int i = 0; i < 50; i++) {
    text[i] = new char [50];
}
Может это и чушь, но это моя чушь и я ее никому не отдам.
Shad0wF1rst вне форума Ответить с цитированием
Старый 03.07.2013, 23:47   #9
Pillowo47
 
Регистрация: 02.07.2013
Сообщений: 5
По умолчанию

Shad0wF1rst ооо... Спасибо но до такого мне пока видимо рано
Для чего используется массив указателей? (Последний вопрос) простите что загружаю ) нуб пока...
Pillowo47 вне форума Ответить с цитированием
Старый 04.07.2013, 01:09   #10
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

очевидно же, для хранения кучи указателей
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Указатели и массивы vampir3001 Помощь студентам 0 28.02.2012 20:35
указатели на массивы и массивы указателей blacktener Общие вопросы C/C++ 16 13.06.2011 20:45
Массивы и указатели (С++) slavy Помощь студентам 3 26.08.2009 19:39
[C] массивы, указатели, двойные указатели. Iggel Общие вопросы C/C++ 5 05.05.2009 12:39
Указатели и массивы. (С++) Eddie Помощь студентам 8 24.04.2009 19:48