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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 86, средняя оценка - 4.60
Zubrikan
Сообщений: n/a
#1

Тип char и указатели - C++

13.08.2008, 17:05. Просмотров 10622. Ответов 7
Метки нет (Все метки)

Вопрос...
Тип может хранить только символы, или строки тоже?
Если только символы, то почему этот код работает?:
...
Код
void my_func(char* my_string)
{
for(int x = 0; x < 10; x++)
{
std::cout << *(my_string + x) << "\n";
}
int main()
{
my_func("Hello World!");
return 0;
}
?? И как вообще это происходит? Функция же должна принимать в качестве аргумента указатель на строку. а мы передаем строку... Объясните плиз про то как это происходит.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.08.2008, 17:05     Тип char и указатели
Посмотрите здесь:

Указатели char* - конкатенация без <string.h> C++
Восьмибитный тип переменной (что за тип, но не BYTE и не CHAR? C++
C++ Строки (массив char), указатели. Не могу понять логику! Help!
Массив символов char и указатели C++
указатели char C++
тип char C++
C++ Почему в setnamedisc нужно использовать char * для установки значения, а при возвращении значения тип метода должен быть char* ?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MAcK
Комбайнёр
1554 / 651 / 21
Регистрация: 27.05.2008
Сообщений: 2,535
13.08.2008, 17:13     Тип char и указатели #2
Всё очень просто, тебе передаётся адрес первого символа, а потом ты шагаешь к следующему адресу, а в нём следующий символ ...
Zubrikan
Сообщений: n/a
13.08.2008, 17:23     Тип char и указатели #3
Не совсем понял...
Vourhey
Почетный модератор
6473 / 2248 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
13.08.2008, 17:34     Тип char и указатели #4
К адресу, хранящемуся в my_string прибавляется х. И с полученного адреса звездочкой берем значение.
Читай про адресную арифметику, тогда поймешь. Арифметику в первом классе надо проходить...
Lord_Voodoo
Супер-модератор
8509 / 2176 / 61
Регистрация: 07.03.2007
Сообщений: 10,853
Завершенные тесты: 1
13.08.2008, 17:35     Тип char и указатели #5
почитай тут, вроде бы написано доходчиво - http://programmersclub.ru/20/
Счастливчик
19 / 18 / 0
Регистрация: 04.08.2008
Сообщений: 31
13.08.2008, 18:59     Тип char и указатели #6
Строку можно обявить разными способами:

1)string moya_stroka;
такой способ позволяет легко соединять строки не используя спецфункции
buffer = str1 + str2 +str3

2)char moya_stroka[] = "Лопух"
строка объявляется как массив символов.
Переменная moya_stroka может использоваться как указатель на первый символ в массиве. И, одновременно, при помощи инструкции сout << moya_stroka можно вывести всю строку сразу

3)Когда ты пишешь char* my_string, то ты объявляешь СТРОКУ символов (которая, вообще говоря, может содержать один символ типа char).


способы 2 и 3 имеют равные возможности работы состроками
Vourhey
Почетный модератор
6473 / 2248 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
13.08.2008, 19:06     Тип char и указатели #7
1) string - это класс. отдельный разговор, к char* относящийся мало.
3) Не строку. А указатель. И даже не на строку, точнее, а на буфер. В char* я могу записать много чего...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.08.2008, 21:09     Тип char и указатели
Еще ссылки по теме:

C++ Указатели char *
C++ Указатели на char
Не могу преобразовать тип char в тип double C++
C++ Указатели при работе со строками char*
C++ Указатели на char

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

Или воспользуйтесь поиском по форуму:
Счастливчик
19 / 18 / 0
Регистрация: 04.08.2008
Сообщений: 31
13.08.2008, 21:09     Тип char и указатели #8
Цитата Сообщение от Vourhey
string - это класс. отдельный разговор, к char* относящийся мало
Конечно отдельный. Но в контексте работы со строками разве нельзя их сравнить?
Цитата Сообщение от Vourhey
Не строку. А указатель. И даже не на строку, точнее, а на буфер. В char* я могу записать много чего...
У меня ничего нет в книге о буферах)) Напиши пару маленьких примеров(как в
char* можно записать ещё что то?)
Yandex
Объявления
13.08.2008, 21:09     Тип char и указатели
Ответ Создать тему
Опции темы

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