Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.09.2010, 13:26   #1
Артэс
Форумчанин
 
Регистрация: 05.06.2007
Сообщений: 529
По умолчанию указатели

Здравствуйте. Меня интересует следующий вопрос на счет указателей.

К примеру:

Код:
int num=10;
int *p = #
кажется все правильно. Но почему строке не нужно указывать символ ' &', и напротив, компилятор ругается, когда этот символ указан?

Код:
char str[10]="abc";
char *p = str;
Артэс вне форума Ответить с цитированием
Старый 06.09.2010, 13:30   #2
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

потому что имя статического массива представляет собой адрес первого элемента. указатели и массивы очень близки в сях
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 06.09.2010, 13:34   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Но почему строке
мое ИМХО:
А потому что int может рассматриваться двояко: как адрес на число и как хранитель числа, интерпретируемого как адрес. Потому компилятор не знает что ты хочешь, и требует явно указать как этот int (всмысле переменку) интерпретировать.
а в случае со строкой str однозначно является интерпретацией адреса на начало строки, потому там символ & не нужен. Строку двояко рассмотреть нельзя - это массив, на который есть указатель.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.09.2010, 14:31   #4
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Цитата:
Сообщение от Артэс Посмотреть сообщение
Но почему строке не нужно указывать символ ' &', и напротив, компилятор ругается, когда этот символ указан?
Замените char на int, чтобы мысли не путало слово "строка". В плюсах нет строк и точка. Есть массивы и приведение имени массива к указателю - это особенность языка, которую нужно знать.
Правильный ответ по теме собственно уже озвучил pproger.
pu4koff вне форума Ответить с цитированием
Старый 07.09.2010, 11:08   #5
Артэс
Форумчанин
 
Регистрация: 05.06.2007
Сообщений: 529
По умолчанию

Спасибо. Теперь понятно)
Артэс вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Указатели Анютик_sexi Помощь студентам 3 16.06.2010 14:38
Указатели sid Помощь студентам 2 02.01.2010 23:23
Указатели AquaticSoul Общие вопросы C/C++ 5 22.12.2009 15:13
[C] массивы, указатели, двойные указатели. Iggel Общие вопросы C/C++ 5 05.05.2009 12:39