编写程序时,怎样可以实现在运行过程中改变全局变量? 基础Java题 试编写一个多线程的程序:启动4个线程。其中两...

作者&投稿:种便 (若有异议请与网页底部的电邮联系)

所有运行中改变值,都需要在函数中赋值。所以只需要在全局变量作用域内的函数中,对全局变量赋值,即可改变全局变量值。

一、改变变量值的方法只有一个,就是对该变量赋值。

二、全局变量赋值和局部变量赋值并无不同,直接赋值即可。

三、参考代码:

#include <stdio.h>
int var=10;//定义全局变量,并初始化为10。
void func1(void)
{
    var = 20;//定义函数func1并改变全局变量var值为20.
}
int main()
{
    printf("%d
", var);//打印var的初始值。
    func1();//调用函数 改变全局变量值。
    printf("%d
", var);//打印var改变后的值。
    return 0;
}

程序会输出

10

20

说明全局变量值已经被成功改变。

四、注意事项:

当函数不在全局变量作用域范围内时,可以使用extern声明,扩展全局变量作用域。



函数参数的规定应该不是绝对定死的,至少应该有针对不同类型参数的规定。一般的做法是,使用指针在调用和被调用之间传递数据。做法可以参考WIN32API和一些大型软件的做法。据我所知,大致有两种情况:1.类似WIN32API的做法。不论是IN还是OUT参数,所有的存储空间都有调用方提供。如:GetTemp(TCHAR*TempPath);调用时,TCHARtp[80];memset(tp,0,80*sizeof(TCHAR));GetTemp(tp);2.类似AutoCADAPI的做法。凡是需要OUT的参数,所有的存储空间都由被调函数提供。这种情况,一般还同时会提供一个空间释放函数,类似free()。例:GetTemp(TCHAR**TempPath);调用时:TCHAR*tp=NULL;GetTemp(&tp);;free(tp);

编写程序将整型变量i设置为全局变量,并且使其初始化值不能够再次被修改。~

const 是只读,static 是设置成静态。
const static int i=10;
i不能被修改。
volatile 关键字是不被系统优化。这个一般用在把数字转换成地址、
比如:#define RCC_AHB1ENR*(volatile unsigned long *)(0x40023800 + 0x30) // volatile 防止编译器优化

public class Day18_A {public static void main(String[] args) throws InterruptedException {Recoun rec = Recoun.getRec();Thread[] trr = new Thread[4];for (int i = 0; i < 4; i++) {trr[i] = new Thread(new NumberTest(rec, i), "线程" + (i + 1) + ":");}for (Thread thread : trr) {thread.start();}for (Thread thread : trr) {thread.join();}System.out.println("所有线程结束查看结果:" + rec.getCount());}}class NumberTest implements Runnable {private Recoun re;private int n;NumberTest(Recoun r, int i) {this.re = r;this.n = i;}public void run() {for (int i = 0; i < 10; i++) {re.method(n);}}}class Recoun {private int count = 0;private Recoun() {}private static final Recoun rec = new Recoun();public static Recoun getRec() {return rec;}public synchronized void method(int i) {if (i % 2 == 0) {System.out.println(Thread.currentThread().getName() + (count++));} else {System.out.println(Thread.currentThread().getName() + (count--));}}public synchronized int getCount() {return count;}}

C++编写出来的程序怎样在运行过后保留数据下次运行时依然存在?
答:需要到网上下载一个数据库,比如MySQL数据库,然后还要学习如何在C++中连接数 据库、操作数据库,这个可以到网上去找教程,一般来说,大型的工程保存经常改动的信息都是用 数据库的,比如你说的学生信息系统;但是如果是小程序或者所保存的数据不需要经常查询变动的话,为此专门去学数据库,学习成本就...

我用C++6.0写的程序怎么只能运行一次,而且在文件夹中只是闪一下,应该怎...
答:如果程序已经设置为反复运行的话,不用加暂停也可以,因为如果程序反复执行,将永远不会退出(如果程序代码中没有退出语句的话),只能按关闭按钮退出,这样就不会一闪而过了

请问在VBA,制作窗体,在程序运行时窗体显示“正在运行……”,程序运行完...
答:这是很简单的事情,有人居然说不能实现?你新建一个窗体,加一个LABEL1,然后在程序开始时调用窗体:UserForm1.Show 0:DoEvents,弹出提示,在程序结束时卸载窗体:Unload UserForm1,就搞定了。通过UserForm1.Label1.Caption = "***字符串***"语句还可以在过程中根据环境设置不同的提示。上传了一个...

vb.net 如何实现继续运行
答:Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Static a As Integer For i = 1 To 100 '运算100次 a = a + i Next End Sub End Class static 是声明静态变量,只要程序不退出,值就会一直保存 这样,...

用C语言写的程序,运行结束看不到运行结果,怎样让它停留在运行画面?
答:getch();或者点击运行而不是调试

在计算机上运行一个C语言编写的程序,要经过怎样的处理过程
答:开发一个C语言程序需要经过的四个步骤:编辑、编译、连接、运行。C语言程序可以使用在任意架构的处理器上,只要那种架构的处理器具有对应的C语言编译器和库,然后将C源代码编译、连接成目标二进制文件之后即可运行。1、编辑:输入源程序并保存(。C文件)。2、编译:将源程序翻译成目标文件(。OBJ文件)...

如何实现一个java 程序运行后,可以检测到另外一个jar 程序在运行中,如 ...
答:考虑使用 Socket 连接进行跨进程通信。被监视进程做 Server,监视进程做 Client。Client 每隔一段时间给 Server 一个信号,Server 做出响应。如果 Client 找不到 Server 或者 Server 不响应就使用 java 或者 javaw 命令重启被监视进程。具体策略还得细化,大体思路如此吧。

...文本文件。我能不能实现这个功能,在程序运行过程中修改
答:可以,没有问题。VB操作文本文件是VB的基本操作模式之一,在程序运行过程中,可以随时修改文本文件的内容,修改后,即可保存,在程序下次启动,即可调用文本文件中储存的内容。Dim XXS As StringPrivate Sub Command1_Click()SSX = Text1.TextOpen App.Path & "\ABC.TXT" For Output As #1 '文本...

如何通过BAT来实现检测程序是否在运行
答:或则手动打开服务(开始-运行-输入services.msc),找到Windows Management Instrumentation服务设置为自动,在点下启动,再用第一个批处理`第二个我只能说抱歉,我原先忽略了这个问题,我现在还不会用批处理修改组策略,但是windows下有个命令secuedit.exe用来执行命令行下的组策略配置,不过这需要自己编辑...

怎样反复地运行一个程序,然后结束
答:什么语言?C++?JAVA?while(true){ run();//你要运行的程序 sleep(2000);//间隔2秒 } 当然这个是死循环,满足你说的要求,但是不好,一般情况下:如果是C++,可以用SetTimer来定时触发这个程序,KillTimer来解除定时触发。如果是JAVA,可以用Timer类去schedule TimerTask类的run()方法。