В чем разница между использованиемКакая разница между флоат * и плывут [п] в C/C++
float* f;
и
float f[4];
Или они относились точно так же? Будет ли использование одного над другим потенциально вызывать проблемы с распределением памяти? Если нет, существуют ли какие-либо ситуации, когда с ними обращаются по-разному?
Не знаю, относится ли это, но я использую тип float * как аргумент функции. Например:
void myfun(float* f){
f[0] = 0;
f[1] = 1;
f[2] = 2;
f[3] = 3;
}
, который собирает и работает нормально (я не совсем уверен, почему - я думаю, что, так как я не выделял какой-либо памяти f
что бы бросить своего рода исключение).
Просто посмотрите «массивы и указатели в C». – Jashaszun
Эта статья может немного помочь: http://eli.thegreenplace.net/2009/10/21/are-pointers-and-arrays-equivalent-in-c – scrappedcola
Имя массива IS является указателем на его первый элемент , 'float f [4]' будет выделять пространство в стеке, float * f определяет только неинициализированный указатель. Когда вы вызываете функцию, передающую массив, вы не передаете все данные, а только адрес данных, который уже выделен вызывающим. Поэтому функции не нужно выделять. –