H5W3
当前位置:H5W3 > 其他技术问题 > 正文

C语言静态变量问题

现在我有两组数据,需要输入两个代码一样的函数,函数内有静态变量,分别存储两组数据的历史值。有什么很好的做法?

我想到
1.为两组数据设两个除名字外一模一样的函数,但感觉代码量成倍增加,而且繁琐
2.传入两个外部定义的全局静态变量,但不能很好的隐藏变量,外部变量一大堆很乱
还有其他方法吗?

回答:

传递两个外部定义的变量比较好,或者是独立出一个函数

void do_something_impl(int *data) {
    ...
}

然后使用的时候用简短的函数包装一下,这种增加不了太多代码

void do_something() {
    static int *data;
    do_something_impl(data);
}

回答:

函数内的静态变量设置成一个二维数组,然后根据函数参数决定使用哪一组数据。比如:

void foo(int group) {
  static int data[2][DATA_SIZE];
  do_something(data[group]);
}

本文地址:H5W3 » C语言静态变量问题

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址