我有两个功能。 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;
}
答案 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;
}
你去,就像这样。我希望我没有在那里犯错。