我聲明如下代碼:結構陣列功能參數
struct coord {
int x;
int y;
}
void rotateFig(struct coord[10][10]);
我需要實現rotateFig
。 我試着先從以下幾點:
void rotateFig(struct coord[10][10] c)
{
//code
}
我`噸編譯 - probaly我在函數定義調用C的方法是不正確。如何,我應該轉移c。使用定簽名。 謝謝
我聲明如下代碼:結構陣列功能參數
struct coord {
int x;
int y;
}
void rotateFig(struct coord[10][10]);
我需要實現rotateFig
。 我試着先從以下幾點:
void rotateFig(struct coord[10][10] c)
{
//code
}
我`噸編譯 - probaly我在函數定義調用C的方法是不正確。如何,我應該轉移c。使用定簽名。 謝謝
struct coord
是一種類型和c
是struct coord
類型可容納10 X 10
struct coord
元素的變量。
所以應該如下
void rotateFig(struct coord c[10][10])
一件事C
與多維數組工作時是不能從函數返回回注。詳情請閱讀this。所以它不建議使用上面的格式作爲默認值C
按值而不是按地址傳遞參數。
,以便在他的回答中提到@ Mr.TAMER,你應該使用下列
void rotateFig(struct coord** c, int d1, int d2)
OTOH,你可以使用下面的代碼旋轉,供大家參考!它將2d陣列旋轉90度!
#include <stdio.h>
#define N 10
int matrix[N][N];
void display()
{
int i, j;
printf("\n");
for (i=0; i<N; i++) {
for (j=0; j<N; j++)
printf("%3d", matrix[i][j]);
printf("\n");
}
printf("\n");
return;
}
int main()
{
int i, j, val = 1;
int layer, first, last, offset, top;
for (i=0; i<N; i++)
for (j=0; j<N; j++)
matrix[i][j] = val++;
display();
for (layer = 0; layer < N/2 ; layer++) {
first = layer;
last = N - layer - 1;
for (i=first; i< last ; i++) {
offset = i - first;
top = matrix[first][i];
matrix[first][i] = matrix[last-offset][first];
matrix[last-offset][first] = matrix[last][last-offset];
matrix[last][last-offset] = matrix[i][last];
matrix[i][last] = top;
}
}
display();
return 0;
}
希望這有助於!
使用這樣的定義:
void rotateFig(struct coord c[10][10])
{
//code
}
數組是實際參數,所以尺寸必須拿出其名稱後,而不是之前。
雖然其他答案是不夠的,我更喜歡將它作爲一個指針,並通過與它的尺寸,這更是動態的,是爲//code
部分是相同的:
void rotateFig(struct coord**, int, int);
void rotateFig(struct coord** c, int d1, int d2)
{
//code
}
但您的原型和定義不匹配...: -/ – littleadv 2012-01-07 10:20:11
@littleadv:哦,是的,謝謝我會立即修復它:) – 2012-01-07 10:27:06
參見:HTTP:// www.dfstermole.net/OAC/harray2.html – 2012-01-07 10:01:13