gpt4 book ai didi

c - 定义具有文件范围的结构以供多个函数访问

转载 作者:太空宇宙 更新时间:2023-11-04 02:49:54 25 4
gpt4 key购买 nike

我有两个功能。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;
}

最佳答案

好的,在您最后一次编辑之后,这里有一个您可以利用的建议,希望如此:

要么声明一个全局指针,即为您的结构数组保存动态分配的内存位置的地址;或者更好地使用局部变量,通过使 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;
}

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

关于c - 定义具有文件范围的结构以供多个函数访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23186528/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com