关于自定义函数和宏定义

一、static:此定义类型有以下3种情况:

1、当修饰一个全局变量时,这个变量的作用域被改变了,只能在当前文件中调用;

2、当修饰一个局部变量时,改变了变量的生命周期,直到程序结束才会被释放。注:一般的调用函数中定义的局部变量默认存储在栈空间,而如果是被static修饰的局部变量存储在数据段内(静态数据库);

3、除了修饰变量,还可以修饰函数,被修饰的函数只可在当前文件中被调用;

二、#define:定义方法如下:

1、首先宏定义可定义宏变量如:#define N 10         则在此程序中N即为已常量10;

2、宏定义还可以定义宏函数如:#define OUT printf("Helloworld\n")        则在此程序中每出现OUT;的字样则输出Helloworld并换行;若为#define P(s) printf("%s\n",s)           则在此程序中每出现类似于P("asdasd");的字样则输出此字符串并换行;

3、宏定义有一个易错知识点如下:

#define S(x)  x*x

int a = 1, b = 2;

printf("%d\n",S(a + b));

此程序执行下来输出值为5,而不是9;因为宏定义只做简单的替换即   S(a + b) = 1 + 2*1 + 2 = 5;

三、自定义函数与宏定义的区别

1、宏函数优点:节省空间(无需像自定义函数一样给形参分配空间,因为无形参)

                缺点:1、浪费时间;

                           2、没有语法检查,不安全;

     普通函数优点:1、有语法检查;

                               2、浪费空间;

猜你喜欢

转载自blog.csdn.net/qq_42200028/article/details/81209578