将结构传递给函数C

将结构传递给函数C,c,pointers,struct,typedef,modular,C,Pointers,Struct,Typedef,Modular,我已经初始化了使用typedef定义的缓存的3个实例。我已通过以下方式对一系列if语句进行了一些处理: cache cache1; cache cache2; cache cache3; int a; void main(...) { if (a == 0) { cache1.attribute = 5; } else if (a == 1) { cache2.attribute = 1; } else if (a == 2) { cache3.attribute = 2 ;

我已经初始化了使用typedef定义的缓存的3个实例。我已通过以下方式对一系列if语句进行了一些处理:

cache cache1;
cache cache2; 
cache cache3; 
int a;

void main(...) {
 if (a == 0) { 
 cache1.attribute = 5; 
} 
else if (a == 1) {
 cache2.attribute = 1;
}
else if (a == 2) {
cache3.attribute = 2 ;
}
但是,现在我需要以以下方式使设计模块化:

cache1;
缓存2;
缓存3;
无效缓存\运算符(缓存用户\缓存,int a){
user_cache.attribute=a;
}
空总管(…){
如果(a==0){
cache_算子(cache1,5);
}
如果(a==1),则为else{
cache_算子(cache2,1);
}

在C语言中,如果要跟踪原始“数据”而不是在函数中创建副本,则必须将该数据的指针传递给该函数

 cache_operator(&cache1,5);
C中的指针就像JAVA中对对象的引用

下面是你如何做到这一点

void cache_operator( cache *user_cache, int a ) 
{
    user_cache->attribute = a;
}
下面是如何调用该函数

 cache_operator(&cache1,5);

我也从JAVA开始。我不知道为什么现在一些大学使用JAVA作为起始语言……这很奇怪,因为JAVA是一种高级语言,对低级细节进行抽象,而C是一种相当低级的语言。在过去,这种情况永远不会发生。

是的,我知道,你能演示一下synthax是如何用于t的吗在传递参数、原始函数定义和访问方法中的属性时,hat会显示出来。这就是我遇到的问题。因此,我会像这样调用此函数
cache\u操作符(*cache1,5);
?如果您发现解决方案可行,请不要忘记接受答案~