c语言的一些基础知识
c语言作为经典语言,这里不再多说了.咱从基础一起探讨吧!
一. 定义一个整型,如果作为局部变量,没有初始化的情况下,它是一个随机的值的,一般情况下输出会是0,但这个0是作为垃圾值的;而如果作为全局变量,没有初始化的情况下,它的值是0.
二.我们都知道,static是用于声明一个内部全局变量,在使用static的时候,并不会在内存中重新开辟一块存储空间的,那么它的优越性是时候发挥作用了,如果当某个方法的调用频率非常高,而该方法中有写变量的值是固定不变的,如果我们使用static来修饰该变量,让该变量只开辟一次存储空间,在运行过程中就可以提高程序的效率和性能了.
三.带参数的宏定义一些细节.如果说我们使用一个带参数的宏定义去做一些简单的运算,少量的代码可能显示不出他的优越性,但在成千上万行代码中,能为整个软件程序运行提高不少性能勒! 例如一个简单的例子,int a = 10;int b = 20;计算结果可以int res = a + b;使用宏定义应该这样的:在main函数外面先#define SUM(v1,v2)(v1+v2) 在main函数里面直接实现 int res = SUM(a,b); 看似没有区别,从运行原理来看,宏定义让程序运行的直接拿到的是(10 + 20)去运算,而没有使用宏定义要先让a和b分别赋值后再运算,是多走了一步"弯路"的.
四.提到宏,应该会想到typedef,define和typedef中有一些细节,可能有些朋友不会注意到,如果说要给指针类型变量"起别名",当使用define的时候会有什么"意外"发生呢? 好,我先来一个#defiine MY_STRING char * 在main函数里面调用MY_STRING name1,name2; 会出现什么后果呢,结果告诉你,会有bug的. 原因是因为MY_STRING name1,name2====char *name1;char name2; 我个人通俗点说,就是name2"吃不到*",作为指针变量,没有*运行当然会报错了!
不足之处还望指出,感激不尽!
-----奈文摩尔