注册 登录
编程论坛 C++教室

结构体数组struct是不是只能定义成全局变量?

FollowDream 发布于 2017-01-13 18:40, 2130 次点击
现在有一个数组叫queue[],是由一群叫Maze的结构体组成的,需要把它作为一个参数传递给一个叫test_structsarray的函数:

程序代码:

void test_structsarray(Maze queue[], int head, int tail)
    {
    int x_following, y_following;
    x_following = queue[head].x + 1;
    y_following = queue[head].y * 2;
    return;
    }
int main()
    {
    struct Maze
        {
        int x;
        int y;
        };
    struct Maze queque[9];
    int head = 1, tail = 1;
    queque[tail].x = 0;
    queque[tail].y = 0;
    test_structsarray(queue, head, tail);
    return 0;
    }


我尝试了“test_structsarray(Maze queue[], int head, int tail)”“test_structsarray(struct Maze queue[], int head, int tail)”“test_structsarray(Maze* queue, int head, int tail)”,可是要么报错“queue was not declared in this scope”、要么报错“Maze was not declared in this scope”……

唯一一次运行没错的,是把整个struct Maze的定义放到main函数外面、作为全局变量的。但是这样无法在main里面对queque[tail].x和queque[tail].y赋值,一旦赋值又报错。

请问,我那段代码中,test_structsarray和main到底哪里写错了?

谢谢!
3 回复
#2
rjsp2017-01-14 18:15
struct Maze
        {
        int x;
        int y;
        };

void test_structsarray(Maze queue[], int head, int tail)
    {
    int x_following, y_following;
    x_following = queue[head].x + 1;
    y_following = queue[head].y * 2;
    return;
    }
int main()
    {
   
    struct Maze queque[9];
    int head = 1, tail = 1;
    queque[tail].x = 0;
    queque[tail].y = 0;
    test_structsarray(queue, head, tail);
    return 0;
    }
#3
FollowDream2017-01-17 18:28
回复 2楼 rjsp
所以说struct就像是class一样,必须要定义在任何函数的外面…… 谢谢!
#4
rjsp2017-01-18 08:22
以下是引用FollowDream在2017-1-17 18:28:25的发言:

所以说struct就像是class一样,必须要定义在任何函数的外面…… 谢谢!
没这说法
而是“使用前必须先定义”
1