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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.89
time123
0 / 0 / 0
Регистрация: 15.11.2012
Сообщений: 53
#1

Что значит char c[10] - C++

16.11.2012, 02:40. Просмотров 2546. Ответов 30
Метки нет (Все метки)

объясните пожалуйста пошагово этот код

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
using namespace std;
 
int main( )
{
   char c[10], c2;
 
   cout << "Type 'abc': ";
   c2 = cin.get( );
   cin.unget( );
   cin.getline( &c[0], 9 );
   cout << c << endl;
}
хочу понять, что значит char c[10] это создание массива из 10 символов?
что делает функция get и unget, и getline... что это за параметры, &c[0] передается по ссылке... а нельзя просто передать, зачем по ссылке передавать? и что девять означает. эх, вот начинаю C++ изучать. конечно непривычно весьма.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.11.2012, 02:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Что значит char c[10] (C++):

что значит static char? - C++
подскажите что означает static char ret;

Что значит две звездочки у char? - C++
int main(int argc, char** argv)

Что значит запись char massiv[] = "text" ? - C++
Почему не указан размер массива и присваивается строка?

Что означает такая запись char *smt=new char[1]? - C++
что означает такая запись char *smt=new char?

Sleep(8000) - что значит? На что можно заменить в борланд с++? - C++
Не распознаёт Sleep(8000) . Если за комментировать пишет что f заданно но не используется. Как исправить? ...

Что значит Handle hf? Что в эту функцию нужно передавать - C++
мне нужно создать функцию Node * ReadNode(HANDLE hf); (Node это структура) Так вот вопрос в том что значит Handle hf? Что в эту функцию...

30
time123
0 / 0 / 0
Регистрация: 15.11.2012
Сообщений: 53
17.11.2012, 03:23  [ТС] #16
так, значит в первом случае получаем адрес указателя, а во втором адрес переменной типа char

C++
1
2
3
4
5
6
7
8
9
#include <iostream>
 
int main()
{
    char c = 'a';
    char* pc = &c;
    std::cout << &pc << std::endl;
    std::cout << static_cast<void*>(pc) << std::endl;
}
а здесь вот http://ideone.com/7oAABQ не понятно почему это они вдруг в char сразу 4 символа поместили

в тип void приводится сам указатель, так? тогда а можно его с самого начала объявить как void, если тип char, или это будет неправильно? и еще интересует, на какие именно операции перегружен оператор для char-указателя? любопытно то что здесь http://ideone.com/BLTjef выдается пустая строка... с чего бы это, ну сам символ NULL там походу хранится.
0
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
17.11.2012, 03:34 #17
Цитата Сообщение от time123 Посмотреть сообщение
выдается пустая строка... с чего бы это, ну сам символ NULL там походу хранится.
Вообще то принято, чтобы строка заканчивалась символом '\0', поэтому у Вас пустая строка.
попробуйте вот этот код:
C++
1
2
3
4
5
6
7
#include <iostream>
 
int main()
{
    char* pc = "MyString\0Hello World";
    std::cout << pc << std::endl;
}
Цитата Сообщение от time123 Посмотреть сообщение
тогда а можно его с самого начала объявить как void, если тип char, или это будет неправильно?
Указатель void, это указатель на какой-то кусок памяти.
0
time123
0 / 0 / 0
Регистрация: 15.11.2012
Сообщений: 53
17.11.2012, 03:40  [ТС] #18
тоесть указатель на указатель? или указатель на какой-то диапазон адресов памяти?

Мне бы еще разобраться с передачей значений в функцию, вот например часть кода

string mumble( int *array, int size )

что если передать int array
вообще вот если не ошибаюсь то можно передавать в функции переменные, массивы со знаками & *
если передать без знака то передается просто значение переменной (не по ссылке), если указать знак & то передается адрес ячейки памяти, а если указать со знаком * то передается значение по данному указателю, верно? то есть в этом примере array - это походу указатель на начало массива видимо, или нет... вот кусок этого кода

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <sstream>
string program_name( "our_program" );
string version( 0.01 );
// ...
 
string mumble( int *array, int size )
{
   if ( ! array ) {
      ostringstream out_message;
 
      out_message << "ошибка: "
                  << program_name << "--" << version
                  << ": " << __FILE__ << ": " << __LINE__
                  << " -- указатель равен 0; "
                  << " а должен адресовать массив.\n";
 
      // возвращаем строку, в которой находится сообщение
      return out_message.str();
   }
   // ...
}
насчет "MyString\0Hello World" ну я в курсе что это символ конца строки, таким образом в том примере это пустая строка получается
0
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
17.11.2012, 04:00 #19
Цитата Сообщение от time123 Посмотреть сообщение
тоесть указатель на указатель? или указатель на какой-то диапазон адресов памяти?
Указатель на ЧТО-ТО.

Пример:
http://ideone.com/Hawfby
Цитата Сообщение от time123 Посмотреть сообщение
то есть в этом примере array - это походу указатель на начало массива видимо
судя по тексту ошибки - да. Но может быть и указатель на переменную типа int, собственно массив из одного элемента
0
cvetik13
0 / 0 / 0
Регистрация: 15.11.2012
Сообщений: 5
18.11.2012, 18:18 #20
Цитата Сообщение от time123 Посмотреть сообщение

p.s. cvetik13, а вы, судя по нику, девушка?)
Логично, что девушка. Ето что-то меняет?
0
time123
0 / 0 / 0
Регистрация: 15.11.2012
Сообщений: 53
18.11.2012, 21:04  [ТС] #21
Ну конечно меняет.

Добавлено через 10 минут
А вот в этом примере

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include  <iostream >
using namespace std;
 
int string_length(char *string) {
    int length = 0;
 
    while (*string != '\0') {
       length++;
       string++;
    }
 
    return(length);
}
 
 
int main () {
    char title[] = "Учимся программировать на языке C++";
    cout  << string_length(title) << " symb";
 
    return 0;
}
получается мы передали в функцию сразу всю строку целиком (весь массив) по значению? а уже в функции создается указатель на первый символ, так?

пожалуйста, можете все варианты перечислить как можно передать эту строку в функцию: по значению, по ссылке, все варианты.
0
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
18.11.2012, 21:07 #22
Цитата Сообщение от time123 Посмотреть сообщение
получается мы передали в функцию сразу всю строку целиком по значению? но уже в функции создается указатель на первый символ, так?
Так. Создается копия переданного указателя, с ней мы и работаем.
0
Kuzia domovenok
1949 / 1802 / 138
Регистрация: 25.03.2012
Сообщений: 6,245
Записей в блоге: 1
18.11.2012, 21:07 #23
нет, тут мы передаём указатель на первый элемент. Собственно так массивы в функцию и передаются.
0
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
18.11.2012, 21:11 #24
Цитата Сообщение от time123 Посмотреть сообщение
(весь массив) по значению?
забудьте про "по значению".
0
time123
0 / 0 / 0
Регистрация: 15.11.2012
Сообщений: 53
19.11.2012, 03:10  [ТС] #25
хм... а получается при вызове функции указывается только так string_length(title) или можно вызвать к примеру так string_length(*title) или так string_length(&title) (я не про этот пример а вообще), так тоже делается да?
0
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
19.11.2012, 03:14 #26
Цитата Сообщение от time123 Посмотреть сообщение
хм... а получается при вызове функции указывается только так string_length(title) или можно вызвать к примеру так string_length(*title) или так string_length(&title) (я не про этот пример а вообще), так тоже делается да?
Все зависит от целей, которые Вы преследуете.
0
Kuzia domovenok
1949 / 1802 / 138
Регистрация: 25.03.2012
Сообщений: 6,245
Записей в блоге: 1
19.11.2012, 03:19 #27
Цитата Сообщение от time123 Посмотреть сообщение
string_length(title) или можно вызвать к примеру так string_length(*title)
ты вообще знаешь разницу между title и *title?
Cкажи, а то я подозреваю, что ты думаешь, что знаешь, но это не так.
0
time123
0 / 0 / 0
Регистрация: 15.11.2012
Сообщений: 53
20.11.2012, 00:20  [ТС] #28
знаю, *title это будет разыменование указателя, то есть обращение к значению переменной, на которую он указывает... в общем проехали.

Добавлено через 16 минут
забудьте про "по значению".
ну вот зачем вы так? читаю

http://www.codenet.ru/progr/cpp/Try-Catch-Throw.php

В случае, если "кидаются" данные нестандартного типа (экземпляры определенных вами классов, структур и т.д.), лучше "ловить" их по ссылке, иначе вся "кидаемая" переменная будет скопирована в стек вместо того, чтобы просто передать указатель на нее.
0
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
20.11.2012, 00:22 #29
Цитата Сообщение от time123 Посмотреть сообщение
ну вот зачем вы так? читаю
а что такое ссылка?
0
time123
0 / 0 / 0
Регистрация: 15.11.2012
Сообщений: 53
20.11.2012, 18:36  [ТС] #30
ну это альтернативное имя для переменной. я к тому что можно ведь так указать

то есть в таком случае

catch(string text) { }

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

Что значит ->? - C++
Наткнулся на непонятное место в непонятном коде. Оно показалось мне особенно непонятным, загуглить не получилось. Что значит: new...

Что значит? - C++
std::cout &lt;&lt; (myCircle.pointInCircle(x, y) ? &quot;In circle&quot; : &quot;Out of circle&quot;); Что означет эта строчка?

что значит /= - C++
Бродил по форуму и наткнулся на вот такой синтаксис temp/=10; а что это значит

что значит ? - C++
что обозначает ? total += Добавлено через 2 минуты вот програма #include &lt;stdio.h&gt; #include &lt;locale.h&gt; #include &lt;conio.h&gt; ...


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

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

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