با توجه به چیزی که گفتی کد بالا باید مشکلت رو حل کنه.
پارامتر به صورت ارایه دو بعدی تعریف نشده اما کار همون رو به خوبی انجام میده.
تو تابع rotat پارمتر s یک پوینری هست که به یک پوینتر دیگه اشاره داره. هرخونه ( n تا خونه ) که در اشاره گر اول قرار داره خودش به n تا خونه ارایه/حافظه دوم اشاره میکنه.
با این دستور میایم یه پوینتر میسازیم که به یکسری پوینتر دیگه ( n تعاد) اشاره میکنه
float** a1 = (float**)malloc(sizeof(float) * n);
و این جا هم میایم به تک تک پوینتر هایی که با دستور بالا ایجاد کردیم ، مقدار/حافظه میدیم ( هر پوینتر بالا در هر خونش ادرس یک خونه از ارایه دوم رو نگه میداره ).
for(int i = 0; i < n; i++) {
a1[i] = (float*)malloc(sizeof(float) * n);
}
اینجام فقط برای تست اومدم به خونه ها مقدار دادم
for(int i = 0; i < n; i++) {
for(int j = 0; j < n; j++)
a1[i][j] = i + j;
}