Как объявить массив без выделения памяти. Обычно мы будем делатьОбъявление массива без выделения памяти
int myArray[10];
printf("%p ", &myArray[0]); // this would print the address.
Но это выделило бы память.
Есть ли способ это сделать?
Как объявить массив без выделения памяти. Обычно мы будем делатьОбъявление массива без выделения памяти
int myArray[10];
printf("%p ", &myArray[0]); // this would print the address.
Но это выделило бы память.
Есть ли способ это сделать?
Вы можете сделать
extern int myArray[10];
в любом одном из header file
и определить массив, как этот
int myArray[10]; // you can also initialize here
у любого из source file
.
Поступая (скажем, у вас есть только один файл)
extern int myArray[10];
int main(void)
{
printf("%p ", &myArray[0]);
getch();
return 0;
}
Linker выбросит ошибку "Unresolved External Symbol
". Linker будет искать массив для печати своего адреса, но определение массива не предусмотрено. Таким образом, компоновщик выдает ошибку.
явно объявить что-то в глобальном масштабе можно использовать extern
:
extern int myArray[10];
Однако, вам нужно будет определить его в какой-то (читай: ровно один) модуль компиляции.
Это глупый вопрос, каждый раз, когда вы объявляете тип данных. Вы выделяете память этой переменной. Невозможно выделить память и использовать переменную без выделения ей памяти.
Нет, каждый раз, когда вы * определяете * переменную, вы выделяете память. Слово * declare * в C означает просто достаточно подробно описать существование переменной, что код, который ее использует, может быть скомпилирован. – librik
Можете ли вы предоставить прецедент? Трудно понять, что вы на самом деле имеете в виду/хотите/нуждаетесь ... –
Почему вы хотите это сделать? – Maroun
Адрес чего? Если 'myArray' не выделен, вы не сможете получить его адрес! – nneonneo