Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
1 / 1 / 2
Регистрация: 16.12.2011
Сообщений: 47

указатель и массив

25.12.2011, 00:52. Показов 652. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
подскажите плс эти две строки эквивалентны?
C++
1
2
char* str="bla bla bla";
char str[]={"bla bla bla"};
Почему при выводе адреса 1 элемента(cout<<str) ниже выведет "bla bla bla" , а не
что то на подобие "ff1248" ?
C++
1
2
char* str="bla bla bla";
cout<<str
Потому что выводится массив?
АААААААААААААААААААААААААААААААААААААААА АААААААААААА!!!!!

Добавлено через 19 часов 48 минут 57 секунд
Тоесть вся эта строка "blablabla" и есть 1 элемент?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.12.2011, 00:52
Ответы с готовыми решениями:

Реализовать 3 функции, каждая из которых принимает указатель на массив и количество элементов и возвращает указатель на новый массив.
Пишу в Microsoft Visual Studio -&gt;Win32 Console application -&gt;C++. Условие:Реализовать 3 функции, каждая из которых принимает указатель на...

Указатель на функцию, которая принимает в качестве параметра указатель на массив
я не понимаю. вроде делаю правильно, но выходит ошибка. есть функция. int foo(int *mas){}; cоздаю на нее указатель. int...

Как сделать функцию, возвращающую указатель на функцию (которая в свою очередь возвращает указатель на массив)
Изучаю c++ по одной книжке.Она говорить не умеет.. Так вот понадобилось написать функцию,которая как параметр получает указатель на...

7
DU
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
25.12.2011, 00:59
cout<<str -
это вызов ф-ии
std::ostream& operator << (std::ostream& out, const char* str); реализация этой ф-ии такова, что она выводит строку.
если нужено вывести значение указателя, то его надо скастить например к const void*.
т.е.
cout<<static_cast<const void*>(str);
в этом случае вызовится другая ф-ия, которая выведет именно значение указателя.
0
1 / 1 / 2
Регистрация: 16.12.2011
Сообщений: 47
25.12.2011, 01:03  [ТС]
мммммм
0
 Аватар для darkknight2008
62 / 62 / 11
Регистрация: 16.10.2011
Сообщений: 200
25.12.2011, 01:04
1) Нет, они не эквивалентны. В первом случае str будет указателем на первый символ строку. Во втором случае компилятор будет считать str за массив из 12 элементов.
Поэтому в первом случае ты можешь написать
C++
1
2
char *str = "abc";
str = "bnmjkl";
А во втором так не получится.
2) cout изначально воспринимает элемент char * как указатель на строку. И выводит ее.
Если требуется вывести адрес, то это делается так
C++
1
printf("%p", str); // Он выведет адрес в машинно-зависимом виде
Через cout делать сложнее. Я бы преобразовал указатель к типу unsigned int и вывел бы в 16 системе счисления.
0
1 / 1 / 2
Регистрация: 16.12.2011
Сообщений: 47
25.12.2011, 01:09  [ТС]
Такое происходит только со строками (char)?
0
 Аватар для darkknight2008
62 / 62 / 11
Регистрация: 16.10.2011
Сообщений: 200
25.12.2011, 01:24
Нет, еще есть void *, const void * и вроде еще буферы. На указатели других типов просто будет ругаться ошибками.

Добавлено через 2 минуты
Поправка, для типов void * и const void * он выводит именно адрес в 16 сс.(Только что проверил)
1
DU
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
25.12.2011, 01:25
ну если для указателей других типов нет специального оператора <<, то будет вызван оператор << для void*/const void*, потому что все указатели неявно к ним кастятся. так что ошибок быть не должно.
1
1 / 1 / 2
Регистрация: 16.12.2011
Сообщений: 47
25.12.2011, 01:44  [ТС]
ясно , спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.12.2011, 01:44
Помогаю со студенческими работами здесь

Динамический массив и указатель на указатель
Спасибо за внимание) Задача такова: нужно удалить элемент по индексу, при этом уменьшить сам массив на 1 (т.е. удалили элемент - уменьшился...

Если в класс нужно передать указатель на указатель на массив строк неизвестной длинны?
Как проинициализировать массив строк wchar_t * (произвольного размера) , если его нужно передать в конструктор класса ? wchar_t *A1 =...

Почему нельзя двумерный массив преобразовывать в указатель на указатель?
Имеем массив: int daytab; при передаче его в функции количество столбцов должно быть определено: f(int daytab) { ... } или f(int...

Как получить ссылку на указатель или указатель на указатель в массиве?
В процессе реализации сортировки пузырьком натолкнулся на такую проблему: как поменять значения указателей, передаваемых в функцию. Если...

Написать функцию принимающую массив и возвращающую указатель на динамический массив
Написать функцию принимающую массив и возвращающую указатель на динамический массив содержащий первые n нaибольших чисел. Как сделать...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru