2016-10-04 2 views
5

В C следующие четко определенные?Инициализировать переменную указателем на эту переменную

void* ptr = &ptr; 
void* array[1] = {array}; 

Другими словами, можете ли вы использовать адрес переменной для инициализации этой переменной? Кажется, он работает с компилятором GCC, но я просто хочу знать, на что я могу положиться.

Edit: это, по сути дублирует Defining a pointer to refere to same variable name's reference?

+0

Почему, на ваш взгляд, это может не сработать? Мне кажется законным. Это похоже на пронумерованные ящики, содержащие их собственные числа, написанные на листе бумаги внутри ... –

+0

Или вы обеспокоены тем, что переменная не имеет адреса в момент инициализации? –

+0

«Четко определенный» может растягивать его, но я не могу ничего сказать, что он будет неопределенным. 'void *' является особенным, но я не знаю, распространяется ли эта специальность на 'void **'. –

ответ

0

Это должно быть законным. Поскольку ptr не const, его значение инициализации не фиксируется в области кода .text и поэтому должно быть известно во время выполнения и записано в ОЗУ с правильным значением.

Смежные вопросы