Здравствуйте, Lorenzo_LAMAS, Вы писали:
LVV>>Именно поэтому можно писать присваивание для массива без всяких операций взятия адреса. LVV>>А также при передаче параметра в функцию имя массива на месте параметра-указателя пишется без всяких амперсандов.
L_L>Потому, что если Вы напишете с & -то получите адрес массива, т.е. rvalue типа int (*)[размер]
LVV>>Еще у Кернигана и Ричи написано.
L_L>Страницу, абзац, строку оригинала. А еще проще, раз уж так на С потянуло, стандарт C99 поглядеть
Тема старая конечно, но попробую задать вопрос здесь.
есть указатель на массив int (*a)[1]
нужно записать к нему new, не прибегая к помощи typedef
/*
typedef int IntArray[5]; //так работает
IntArray *arr = new IntArray[1];
*/
а как записать, чтобы работало так: int (*a)[1] = new .......?
DV>Тема старая конечно, но попробую задать вопрос здесь. DV>есть указатель на массив int (*a)[1] DV>нужно записать к нему new, не прибегая к помощи typedef DV>/* DV>typedef int IntArray[5]; //так работает DV>IntArray *arr = new IntArray[1]; DV>*/
DV>а как записать, чтобы работало так: int (*a)[1] = new .......?
С преобразованием типа
int (*pp)[1] = (int (*)[1]) new int[1];
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, LaptevVV, Вы писали:
LVV>Здравствуйте, LaptevVV, Вы писали:
DV>>>а как записать, чтобы работало так: int (*a)[1] = new .......? LVV>>С преобразованием типа LVV>>
LVV>>int (*pp)[1] = (int (*)[1]) new int[1];
LVV>>
LVV>Не согласен — предлагай! LVV>Напишите, как правильно, пожалуйста.
Здравствуйте, LaptevVV, Вы писали:
LVV>Не согласен — предлагай!
если не понятно, то я не согласен, что массив из одного int можно безнаказанно приводить к указателю на что бы то ни было. Указатель легко может оказаться больше, чем int...
Если уж тебе охота хаккерить именно так, то надо действовать в следующем духе:
reinterpret_cast<XXX_type>( new char[sizeof(XXX_type)])
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Erop, Вы писали:
LVV>>Не согласен — предлагай! E>если не понятно, то я не согласен, что массив из одного int можно безнаказанно приводить к указателю на что бы то ни было. Указатель легко может оказаться больше, чем int...
Эт понятно. Дело не в хакерстве. А втом, что до меня не дошло, как правильно.
Наверное, вот так:
int (*p)[1] = new int [1][1];
Указатель на массив, элементом которого является массив из одного элемента.
Ы?
Хочешь быть счастливым — будь им!
Без булдырабыз!!!