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

Дебильные указатели - C++

Восстановить пароль Регистрация
 
Scorpion
0 / 0 / 0
Регистрация: 13.05.2014
Сообщений: 19
31.05.2014, 23:22     Дебильные указатели #1
Здравствуйте, граждане. Я начинающий программист на AcrionScript. Но в универе учу С++ и понимаю, что нужно освоить и этот язык, чтобы считать себя полноценным программистом. Но я не могу разобраться в этим дебильных указателях. В АС3 такого нет.

Вот на пример, я в классе прописал приватную переменную int b, а в конструкторе записал чтоб устанавливало b = 0 - все нормально.

Прописал в классе приватную переменную char name, а в конструкторе name = "Alex" - уже не пашет, требует, чтоб я записал переменную как char *name.

Вроде одна и та же операция присваивания. Почему тогда для int переменной не нужно использовать указатель, а для типа char нужно ????
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.05.2014, 23:22     Дебильные указатели
Посмотрите здесь:

C++ Указатели
Указатели.... C++
C++ Указатели
Указатели C++
C++ Указатели
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Psilon
Master of Orion
 Аватар для Psilon
5743 / 4691 / 619
Регистрация: 10.07.2011
Сообщений: 14,162
Записей в блоге: 5
Завершенные тесты: 4
31.05.2014, 23:28     Дебильные указатели #2
Scorpion, потому что строка - это массив символов, а не один символ, поэтому
C++
1
char string[] = "Hello";
ну а массивы и указатели в С - практически одно и то же, поэтому можно записать и таким образом:
C++
1
char *string = "Hello";
Jewbacabra
1794 / 1509 / 541
Регистрация: 24.04.2014
Сообщений: 4,242
31.05.2014, 23:29     Дебильные указатели #3
Цитата Сообщение от Scorpion Посмотреть сообщение
дебильных указателях
с таким подходом с++ не освоить
Цитата Сообщение от Scorpion Посмотреть сообщение
name = "Alex" - уже не пашет
почитай про представление строк в с и все поймешь
Psilon
Master of Orion
 Аватар для Psilon
5743 / 4691 / 619
Регистрация: 10.07.2011
Сообщений: 14,162
Записей в блоге: 5
Завершенные тесты: 4
31.05.2014, 23:30     Дебильные указатели #4
Scorpion, и да, без указателей в С/С++ вы и шагу не ступите, поэтому разбирайтесь. ActionScript - это фигня, как и большинство скриптовых языков.
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
31.05.2014, 23:52     Дебильные указатели #5
Цитата Сообщение от Psilon Посмотреть сообщение
C++
1
char *string = "Hello";
Правильнее будет так (чтобы избежать случайных модификаций):
C++
1
const char *string = "Hello";
zss
Модератор
Эксперт С++
 Аватар для zss
5953 / 5558 / 1787
Регистрация: 18.12.2011
Сообщений: 14,204
Завершенные тесты: 1
01.06.2014, 09:43     Дебильные указатели #6
Цитата Сообщение от Psilon Посмотреть сообщение
char string[] = "Hello";
Здесь создается массив длиной 6 символов и в нее копируется текст Hello
Цитата Сообщение от Psilon Посмотреть сообщение
char *string = "Hello";
Здесь массив не создается и string - это указатель на константную строку.
Scorpion
0 / 0 / 0
Регистрация: 13.05.2014
Сообщений: 19
01.06.2014, 13:10  [ТС]     Дебильные указатели #7
Ясненько, благодарю. Вот в Яве тоже тех указателей нет, но это весьма серьезный язык программирования.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.06.2014, 13:35     Дебильные указатели
Еще ссылки по теме:

C++ Указатели
C++ Указатели, такие указатели
Указатели.Строки и указатели C++

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

Или воспользуйтесь поиском по форуму:
Psilon
Master of Orion
 Аватар для Psilon
5743 / 4691 / 619
Регистрация: 10.07.2011
Сообщений: 14,162
Записей в блоге: 5
Завершенные тесты: 4
01.06.2014, 13:35     Дебильные указатели #8
Scorpion, то, что они от вас скрыты, не значит, что их нет. По большому счету их там для пользователя (под пользователем я имею ввиду программиста на яп) нет просто потому, что сборщик мусора это такая неприятная штука, которая тасует память как ему хочется, и смысла в указателях чуть менее, чем никакого. Поэтому вводится понятие "ссылки" - дескриптора объекта, по которому система может получить указатель. А работа с указателями напрямую требует фиксации памяти и запрету сборщику работать (в том же шарпе, где указатели можно использовать в небезопасном контексте, есть ключевое слово fixed, запрещающее сборщику перемещать объекты), что ведет в фрагментированности памяти и прочим неприятным штукам
Yandex
Объявления
01.06.2014, 13:35     Дебильные указатели
Ответ Создать тему
Опции темы

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