1.在编程的时候应当少用define来进行宏定义,应当尽量使用enum,其中主要是应为enum是类型安全的;二其是在预编译之后其左右的,这就有利于调试,例子:
a.类型安全:
其中enum的值是整形,当我们没有给那些定义赋值时,其是自动从零开始赋值的,当我们需要自己的值时就可以手动赋值,其如下:
enum
{
h ,h1=3,
}
其中的h默认值是0。当我们赋的值时一个小数时,vs编译器会自动帮我们检测出来,而define则不行,因为其是可以任何类型的,所以说其不是类型安全的。
b.方便调试
或许很多程序员已经习惯在文件开始使用大量的#define语句。例如:这里程序文件开头有如下#define语句
3.指针中*、&操作符
其中符号'*'有两种意思:一种是乘;第二中是指针中的取值运算符。其中的‘&’是取地址运算符。但是指针在定义的时候符号‘*’起的作用不同,例子:
int a=10;
int *p=&a; //让指针p指向存储变量a的单元,&a就表示是a单元的内存地址,
//这个时候的*仅仅表示p是一个指针变量,其表示的意思相当于*没起作用,而只有指针p。
printf("*p=%d a=%d",*p,a); //将打印出*p=10,a=10,*p表示是对变量a做操作
结论:也就是说p的值是一个内存地址值,而*p的值是一个p表示的内存地址里具体的数值。
4.exit与return返回函数
在main函数中我们通常使用return (0);这样的方式返回一个值。
但这是限定在非void情况下的也就是void main()这样的形式。
exit()通常是用在子程序中用来终结程序用的,使用后程序自动结束跳会操作系统。
但在如果把exit用在main内的时候无论main是否定义成void返回的值都是有效的,并且exit不需要考虑
#include <iostream>
#include <string>
using namespace std;
int main()
{
exit (1);//等价于return (1);
}
还有一个就是,当指针在函数来传递时使用与不用‘&’的作用不同,其使用‘&’则其是可以在函数库了改变其值的,其如下:
4.win32宏定义是编译器自己自带的宏,在程序中是没定义的,其如下:
当在linux系统下编译源代码时,这些东西就需要自己手动定义,如在这个文件下要加
#define __linux
如果不加的话,则话导致其一些变量是未定义的。
宏的初始化:
3、双等号赋值时的意思: