将结构传递给函数 C
passing struct to function C
我已经初始化了使用 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 ;
}
但是现在我需要通过以下方式使设计模块化:
cache cache1;
cache cache2;
cache cache3;
void cache_operator( cache user_cache, int a ) {
user_cache.attribute = a;
}
void main(...) {
if (a == 0) {
cache_operator(cache1,5);
}
else if (a == 1) {
cache_operator(cache2,1);
}
...
我在将缓存传递给方法时遇到问题。我习惯了java编程,对c指针不是很熟悉。但是,如果我如上所示传递缓存本身,我将传递堆栈上的缓存副本,然后生成与原始代码不同的结果。在将适当的缓存传递给函数并确保它被正确访问时,我如何正确地将第一个设计转换为第二个设计。
在 C 语言中,如果要跟踪原始数据 'data' 而不是在函数中创建副本,则必须将该数据的指针传递给该函数。
C 中的指针就像 JAVA 中对对象的引用。
以下是您的操作方法。
void cache_operator( cache *user_cache, int a )
{
user_cache->attribute = a;
}
以下是函数的调用方式。
cache_operator(&cache1,5);
我也是从JAVA开始的。我不知道为什么现在有些大学使用 JAVA 作为起始语言......这很奇怪,因为 JAVA 是一种抽象低级细节的高级语言,而 C 是一种相当低级的语言。以前绝对不会这样..
我已经初始化了使用 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 ;
}
但是现在我需要通过以下方式使设计模块化:
cache cache1;
cache cache2;
cache cache3;
void cache_operator( cache user_cache, int a ) {
user_cache.attribute = a;
}
void main(...) {
if (a == 0) {
cache_operator(cache1,5);
}
else if (a == 1) {
cache_operator(cache2,1);
}
...
我在将缓存传递给方法时遇到问题。我习惯了java编程,对c指针不是很熟悉。但是,如果我如上所示传递缓存本身,我将传递堆栈上的缓存副本,然后生成与原始代码不同的结果。在将适当的缓存传递给函数并确保它被正确访问时,我如何正确地将第一个设计转换为第二个设计。
在 C 语言中,如果要跟踪原始数据 'data' 而不是在函数中创建副本,则必须将该数据的指针传递给该函数。
C 中的指针就像 JAVA 中对对象的引用。
以下是您的操作方法。
void cache_operator( cache *user_cache, int a )
{
user_cache->attribute = a;
}
以下是函数的调用方式。
cache_operator(&cache1,5);
我也是从JAVA开始的。我不知道为什么现在有些大学使用 JAVA 作为起始语言......这很奇怪,因为 JAVA 是一种抽象低级细节的高级语言,而 C 是一种相当低级的语言。以前绝对不会这样..