请教关于dll中函数内的static变量

请教关于dll中函数内的static变量,第1张

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

数组作参数时退化为指针,也就是实际上被调用函数只得到了数组的首地址,这样的话它可以直接改变原数组的,要想让它不改变的话函数可以这么定义

void fun1(int a[][0], int an, const int b[])

b在main中不一定要是const类型的,这样定义只是使b对函数fun1是const的,这样的话当你试图在函数fun1中改变数组b时编译器会报错。

如果只在当前的c文件中使用,不会在别的c文件中使用,此时在c而不是h文件中用static声明;如果声明的全局变量会在别的c文件中使用,那么将其声明为extern的,并放在h文件中。

语言特点

主要特点

C语言是一种结构化语言,它有着清晰的层次,可按照模块的方式对程序进行编写,十分有利于程序的调试,且c语言的处理和表现能力都非常的强大,依靠非常全面的运算符和多样的数据类型。

可以轻易完成各种数据结构的构建,通过指针类型更可对内存直接寻址以及对硬件进行直接 *** 作,因此既能够用于开发系统程序,也可用于开发应用软件。通过对C语言进行研究分析,总结出其主要特点如下:

(1)简洁的语言

C语言包含的各种控制语句仅有9种,关键字也只有32个,程序的编写要求不严格且以小写字母为主,对许多不必要的部分进行了精简。实际上,语句构成与硬件有关联的较少。

且C语言本身不提供与硬件相关的输入输出、文件管理等功能,如需此类功能,需要通过配合编译系统所支持的各类库进行编程,故c语言拥有非常简洁的编译系统。

(2)具有结构化的控制语句

C语言是一种结构化的语言,提供的控制语句具有结构化特征,如for语句、ifelse语句和switch语句等。可以用于实现函数的逻辑控制,方便面向过程的程序设计。 

-C语言

我认为

static型变量能够保持上一次的值不变

那么下一次调用函数时,再对其赋值是无效的

因为它的值上一次的保持不变

比如:

for (i=0; i<3; i++ )

{

static j = 0; //每次循环对 j 赋值为0,可是赋值无效,输出结果还是:1 2 3

j++;

printf("%d ", j);

}

方法又称为静态方法,使用static修饰,在类装载(JVM功能之一)的同时分配内存(可以说是方法入口指针),可以用:类名方法名调用,属于类宽度,因此成为类方法。不用创建对象就可以调用。

实例方法是那些非静态方法,是在创建对象的同时分配内存,所以这只属于某个新创建的对象,因此称为“实例方法”,必须通过新创建的对象名方法名来调用。

public修饰的是 方法的 访问权限,实例方法和静态方法都可以用public修饰,表示是所有其他类都可以使用。

static修饰的是 类方法,类变量也是由static修饰

希望能够帮助你~~~

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/13496547.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-09-01
下一篇2025-09-01

发表评论

登录后才能评论

评论列表(0条)

    保存