C++小技巧emun namespace 指针*、&(在函数里做参数) exit与return Win32宏定义 双等号代表意义

1.在编程的时候应当少用define来进行宏定义,应当尽量使用enum,其中主要是应为enum是类型安全的;二其是在预编译之后其左右的,这就有利于调试,例子:

  a.类型安全:

   其中enum的值是整形,当我们没有给那些定义赋值时,其是自动从零开始赋值的,当我们需要自己的值时就可以手动赋值,其如下:

	enum
	{
		h ,h1=3,
	}
其中的h默认值是0。当我们赋的值时一个小数时,vs编译器会自动帮我们检测出来,而define则不行,因为其是可以任何类型的,所以说其不是类型安全的。


b.方便调试

或许很多程序员已经习惯在文件开始使用大量的#define语句。例如:这里程序文件开头有如下#define语句

        #define     N                     10
        #define     PI                     3.14
        #define     MAX                10000
        #define     Heigth               6.65
        ...
        ...
        假设这里程序运行出错误,而且就是在我们使用这些常量有错误,此时编辑器应该会抛出错误信息。如果该信息提示6.65这里有错误,Ok如果你运气好你正好记得或者程序简单一眼能找到6.65表示什么,如果程序很复杂,而且报出6.65的文件是引用该文件,不记得,那么你会困惑这是什么?或许会花大量时间去追踪6.65是什么?进而定位问题。
        为什么错误信息是6.65呢?而不是Heith呢?因为在预编译阶段,已经用5.65来代替Heigth,Height没有进入记号表(system table)内。解决之道是可以使用下面语句进行替换
         const double treeHeight=5.68;
2.其中using namespace全局命名空间只有在c++里才有的,而在c语言里是没有这个用法的。
如果我们在VS上写程序时,如果把代码后缀命名为.C的话其是会报错的,而应该把后缀改为.C++来。其报错是说using未定义的标识符。如下:

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、双等号赋值时的意思:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值