c语言复习--静态变量(static)

        静态变量存放在内存中的静态存储区,编译系统为其分配固定的存储空间,重复使用时,会保留变量中的值。 

其定义形式为:              static 类型标识符 变量名

静态变量分为外部静态变量与内部静态变量。外部静态变量是一种全局变量,但作用域仅在定义其的源文件之中,不像外部变量作用于整个程序。

比如:分析下列程序

/*文件一*/
#include<stdio.h>
static int x=2;
int y=3;
extern void add2();
void add1();

void main(){
  add1();  add2();   add1();   add2();
  printf("x=%d;y=%d",x,y);
}
 
void add1(void){
  x+=2;
  y+=3;
  printf("in add1 x=%d\n",x);
}

/*文件二*/
static int x=10;
void add2(void){
  extern int y;
  x+=10;
  y+=2;
  printf("in add2 x=%d\n",x);
}

程序运行结果为

in add1 x=4

in add2 x=20   注意add2中的x是文件二中的外部静态变量

in add1 x=6

in add2 x=30

x=6;y=13  注意文件二中y定义为外部变量

内部静态变量与自动变量相似。不同点在于自动变量退出函数调用即消失。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
) encoder_fw_output = self.encoder_fw(x) encoder_bw_output = self.encoder_bw(x.flip([1])) encoder_output =在C语言中,全局静态变量的作用域和生命周期都限制在定义它的文件内, torch.cat((encoder_fw_output[:, -1, :], encoder_bw_output[:, -1, :].flip([1])), dim=1) 其他文件不能直接访问该变量。在单元测试中,如果需要测试包含全局静态变量的 output = self.fc(encoder_output) return output # 实例化模型 model = TimeSeriesBiTransformer(input_size=1函数或类,可以使用以下方法来处理: 1. 如果全局静态变量的值在测试过程中不需要, output_size=1, window_size=10, hidden_size=64, num_layers=2, num_heads=4) # 定义修改,可以将其定义为const全局静态变量,这样可以避免意外修改全局静态变量损失函数和优化器 criterion = nn.MSELoss() optimizer = optim.Adam(model.parameters(), lr=0.001) 的值。 2. 如果全局静态变量的值在测试过程中需要修改,可以在测试文件中重新定义一个同名的全局静态变量,并在测试用例中访问和修改该变量。由于测试文件中# 训练模型 for epoch in range(num_epochs): for i, (inputs, labels) in enumerate(train_loader): optimizer的全局静态变量和原始文件中的全局静态变量属于不同的变量,因此.zero_grad() outputs = model(inputs) loss = criterion(outputs, labels) loss.backward() optimizer.step() # 使用模不会影响到原始文件的执行。例如: ```c // original_file.c static int global_static_var = 42型进行预测 with torch.no_grad(): predicted = model(test_inputs) ``` 以上是使用PyTorch实现CNN和; void func() { // 使用 global_static_var 变量 } // test_file.c static int global_static_var = 0; Bi-Transformer进行时间序列预测的方法,具体实现可以根据实际情况进行调整和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shiroi hana

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值