Изменение формы динамического массива с использованием параметров функции

Сегодня я обнаружил это в файле примера, предоставленном мне компанией:

void mySgemm( int m, int n, int k, float alpha, float beta, float a[m][n],   float b[n][k], float c[m][k], int accelerate )

Вызывается с:

a_cpu = malloc(..);
b_cpu = malloc(..);
c_cpu = malloc(..);
mySgemm(m, n, k, a, b, a_cpu, b_cpu, c_cpu, true);

Я не могу скомпилировать свой собственный подобный пример, честно говоря, я никогда даже не видел, чтобы кто-то брал динамический массив и формировал его как таковой, используя сами параметры функции.

Это законный звонок?


Что меня смущает, так это то, что в функции mySgemm они обращаются к a,b,c как к двойным массивам, поэтому массив по существу изменяется!?


person Constantin    schedule 11.04.2013    source источник
comment
Это недопустимо в C++. C++ не имеет массивов переменного размера. Это может быть законным в C99, в зависимости от того, как вещи объявлены.   -  person n. 1.8e9-where's-my-share m.    schedule 12.04.2013


Ответы (1)


нет, это недопустимый С++.

я предполагаю, что объявления формальных аргументов будут передаваться в c99 как вариативные массивы, но я не уверен, что фактические аргументы для них будут приняты

person Cheers and hth. - Alf    schedule 11.04.2013
comment
фактические аргументы в пользу этого будут приняты Они не будут. - person ; 12.04.2013