定义具有可由多个函数访问的文件范围的结构

时间:2014-04-20 19:12:55

标签: c function data-structures struct scope

我有两个功能。 1.根据输入定义数据结构。 2.使用定义的结构。

如何在一个函数中定义结构,以后能够在另一个函数中使用它?

 struct myStruct{
        int a;
        int b;
        int c;
     };

 void initialize(int size){
     struct myStruct myArray[size];
 }

 void operations(){
      myArray[1].a = 7;
 }

这些是在外部文件中定义的,输入和输出已设置,不应更改。有没有办法让我的结构数组稍后可以通过不同的函数访问?

编辑:尝试将其指定给指针。

struct myStruct{
        int a;
        int b;
        int c;
     };
 struct cache_entry *p;
 void initialize(int size){
     struct myStruct myArray[size];
     *p = &myArray;
 }

 void operations(){
      myArray[1].a = 7;
 }

1 个答案:

答案 0 :(得分:2)

好的,接着是你的上一次编辑,这里有一个你可以使用的建议,希望如此:

声明一个全局指针,即保存结构数组的动态分配内存位置的地址;或者更好地使用局部变量,使initialize函数返回动态分配的内存的地址,同时使函数operations接收结构的指针。

// Suggestion #1

struct myStruct {
    int a;
    int b;
    int c;
} * myArray;

void initialize( int size ) {
    myArray = malloc( size * sizeof * myArray );
}

void operations( ) {
    myArray[1].a = 7;
}


// Suggestion #2
// DO NOT USE THEM BOTH TOGETHER

struct myStruct {
    int a;
    int b;
    int c;
};

struct myStruct * initialize( int size ) {
    return malloc( size * sizeof( struct myStruct ) );
}

void operations( struct myStruct * myArray ) {
    myArray[1].a = 7;
}

你去,就像这样。我希望我没有在那里犯错。