Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 结构数组函数参数_C_Arrays_Struct_Arguments - Fatal编程技术网

C 结构数组函数参数

C 结构数组函数参数,c,arrays,struct,arguments,C,Arrays,Struct,Arguments,我有以下声明代码: struct coord { int x; int y; } void rotateFig(struct coord[10][10]); 我需要实现rotateFig。 我试着从以下几点开始: void rotateFig(struct coord[10][10] c) { //code } 我无法编译它-可能我在函数定义中传输c的方式不正确。我应该如何使用给定的签名传输c。 谢谢你使用这个定义: void rotateFig(struct coord c[10][

我有以下声明代码:

struct coord {
int x;
int y;
}
void rotateFig(struct coord[10][10]);
我需要实现
rotateFig
。 我试着从以下几点开始:

void rotateFig(struct coord[10][10] c)
{
   //code
}
我无法编译它-可能我在函数定义中传输c的方式不正确。我应该如何使用给定的签名传输c。 谢谢你使用这个定义:

void rotateFig(struct coord c[10][10])
{
   //code
}

数组是实际参数,因此维度必须在其名称之后,而不是之前。

struct coord
是一种类型,
c
是一种类型的变量
struct coord
,可以容纳
10 X 10
struct coord
元素

所以应该是这样的

void rotateFig(struct coord c[10][10])
C
中使用多维数组时需要注意的一点是,它不能从函数返回。有关详细信息,请阅读。因此,不建议使用上述格式,因为默认情况下,
C
按值而不是按地址传递参数

因此,正如@Mr.TAMER在他的回答中提到的,您应该使用以下命令

void rotateFig(struct coord** c, int d1, int d2)
OTOH,您可以使用以下旋转代码作为参考!它将二维阵列旋转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;
}
#包括
#定义n10
整数矩阵[N][N];
无效显示()
{
int i,j;
printf(“\n”);

对于(i=0;i虽然其他答案已经足够了,但我更喜欢将其作为指针传递并随其传递维度,这更具动态性,对于
//code
部分也是如此:

void rotateFig(struct coord**, int, int);

void rotateFig(struct coord** c, int d1, int d2)
{
   //code
}

请看:但您的原型和定义不匹配…:-/