Заблокирован
|
||||||||||||||||
1 | ||||||||||||||||
Указатели, почему выводится строка вместо символа?10.09.2012, 15:05. Показов 4312. Ответов 18
Метки нет (Все метки)
Понемногу мозги закипают, сижу разбираюсь с указателями, вот наваял пример, но в моем понимании, на экран должен вылазить символ, а выходит строка....
вот код
arrayG " Кто знает, в чем фокус??? Добавлено через 3 минуты В принципе вообще присваивать надо как
0
|
10.09.2012, 15:05 | |
Ответы с готовыми решениями:
18
Почему Лафоре использует указатели на указатели, вместо обмена значениями указателей? Почему вместо 2 выводится белеберда? Почему вместо 1.5 выводится 1.500000? Почему вместо вывода русских букв выводится ? ? |
154 / 138 / 34
Регистрация: 23.05.2009
Сообщений: 275
|
||||||
10.09.2012, 15:21 | 2 | |||||
0
|
7 / 7 / 1
Регистрация: 31.01.2010
Сообщений: 51
|
|||||||||||
10.09.2012, 15:23 | 3 | ||||||||||
Ниже приведенные части кода идентичны,пища для размышления
0
|
154 / 138 / 34
Регистрация: 23.05.2009
Сообщений: 275
|
||||||
10.09.2012, 15:28 | 4 | |||||
И вообще
0
|
1321 / 983 / 267
Регистрация: 17.05.2012
Сообщений: 2,687
|
||||||
10.09.2012, 15:31 | 5 | |||||
0
|
70 / 64 / 5
Регистрация: 09.06.2012
Сообщений: 291
|
|||||||||||
10.09.2012, 15:48 | 7 | ||||||||||
Andsteadur,пробуйте
AnreyKazakov,
0
|
Заблокирован
|
||||||
10.09.2012, 15:49 [ТС] | 8 | |||||
Да я понял, просто когда присваиваешь
Но вместо адреса он выводит почему-то ересь какую-то, как тогда адрес вывести? или я вообще все перепутал?
0
|
87 / 87 / 1
Регистрация: 19.06.2012
Сообщений: 245
|
|
10.09.2012, 15:54 | 9 |
Да, фактически адрес. Только cout поедает тип char* как ссылку на строку
1
|
1321 / 983 / 267
Регистрация: 17.05.2012
Сообщений: 2,687
|
||||||
10.09.2012, 15:56 | 10 | |||||
1
|
154 / 138 / 34
Регистрация: 23.05.2009
Сообщений: 275
|
|
10.09.2012, 15:59 | 11 |
Где имя переменной? Это раз. И не многовато ли инициализаторов? Это два.
А вообще не пойму к чему был этот вопрос?
0
|
Заблокирован
|
|
10.09.2012, 16:02 [ТС] | 12 |
0
|
70 / 64 / 5
Регистрация: 09.06.2012
Сообщений: 291
|
|
10.09.2012, 16:02 | 13 |
AnreyKazakov, всё верно
/*мне казалось что значение объекта i содержит адрес первого элемента строки ar[], а *i его значение;*/
0
|
Заблокирован
|
|
10.09.2012, 16:07 [ТС] | 14 |
Во ,вывел теперь и адрес cout<<&i<<endl;
0x22ff44 -красивый какой был как цвет прям в RGB )
0
|
2525 / 1751 / 152
Регистрация: 11.08.2012
Сообщений: 3,349
|
|||||||||||
10.09.2012, 16:12 | 15 | ||||||||||
Работа с "числовыми" и "символьными" типами идет по-разному
1
|
Заблокирован
|
||||||
10.09.2012, 16:20 [ТС] | 16 | |||||
В моем понимании вывод только идет по разному или нет?
Да, а когда оператор инкремента применять к указателю, он получается прибавляет не единицу а размерность указателя, так?
0
|
87 / 87 / 1
Регистрация: 19.06.2012
Сообщений: 245
|
|
10.09.2012, 16:24 | 17 |
Только вывод по-разному. Когда прибавляешь к указателю число - самому указателю прибавляется число умножить на размер того, на что он указывает.
Честно говоря я точно не знаю точно, но либо у std::cout перегружен operator<< для случая char*, либо срабатывает неявный вызов конструктора std::string, который как известно умеет принимать char*
1
|
154 / 138 / 34
Регистрация: 23.05.2009
Сообщений: 275
|
|
10.09.2012, 16:25 | 18 |
Указатель смещается на sizeof(T) байт относительно текущей позиции. Где Т - тип значения, на которое указывает указатель.
1
|
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
11.09.2012, 08:29 | 19 |
AnreyKazakov, указатель указывает на блок в памяти, в котормо может располагаться сколько угодно однотипных данных. Сам указатель хранит только адрес начала блока, но не его размер и для работы с блоком надо как то помимо указателя получить размер блока. Потоковые операторы не имеют операндов для передачи размера и не могут выводить отдельные данные по указателям. Если потоку скормить любой другой казатель, то будет выведен сам указатель, а указатель на символ считается указателем на нультерминальную строку символов, длина которой (размер блока) определяется поиском первого нулевого символа.
0
|
11.09.2012, 08:29 | |
11.09.2012, 08:29 | |
Помогаю со студенческими работами здесь
19
почему вместо выполнения кода он выводится на экране Почему вместо перехода на следующую строку выводится /n Почему не выводится строка? Почему вместо элементов массива выводится на экран пустота? Почему вместо 10 наиболее встречающихся в списке слов выводится не то? Почему не выводится одна строка? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |