标签:style blog color ar 使用 for sp 文件 div
1 //引用的作用:代码简洁 2 //形参和实参同地址,实现的方式和指针的一样 3 //引用和指针没有本质的区别 4 5 //强转引用 6 float f = 3.14f; 7 cout<< hex << (int&)f << endl; 8 cout<< hex << *(int*)&f <<endl;//两式是等价的 9 10 cout<< hex << (float&)(int&)f << endl; 11 cout<< hex << *(float*)&(*(int*)&f) << endl;//两式是等价的 12 13 //引用类型和指针类型的区别 14 char ch = ‘a‘, ch2 = ‘b‘; 15 16 //1.引用不能为 NULL ,必须初始化,指针可以为 NULL 17 // char& Ref = NULL; 错误:引用不能为 NULL 18 // char& Ref = 123; 错误:引用不能为常量 19 // char& Ref ; 错误:引用必须初始化 20 char& Ref = ch; //引用的初始化 21 Ref = 2; 22 23 //2.引用一旦绑定无法解除, 指针可以 24 Ref = ch2; //这里 Ref 的地址和 ch 的地址是一样,而不是 ch2 的地址 25 26 //3.没有二级引用,有二级指针 27 28 //引用当作函数的返回值 29 //1.当返回值为引用时,不能返回局部变量或形参变量 30 //使用场合:返回返回值当左值 31 32 int& fun() 33 { 34 //全局变量 35 return g_nNum; 36 } 37 38 int& fun1(int *pNum) 39 { 40 //实际上返回值的是实参 41 return *pNum; 42 } 43 44 int nN = fun1(); 45 int& r = fun1(); 46 47 //返回值当左值 48 fun1() = 2; 49 50 51 //const的用法 52 //1.不能当左值,通常用来替代无参数宏 53 不能把 const 转化为 非const 54 float const PI = 3.14f; 55 const float PI = 3.14f; 56 57 //2.const 是编译器做限制 58 float Area (float R) 59 { 60 float* pf = NULL; 61 const float PI = 3.14f;//此时的 PI 是在栈中不是在堆中 62 pf = (float*)&PI; 63 *pf = 2; //此时 PI 的值改变为 2 64 cout<< PI << endl; 65 } 66 67 char szBuff[10] = "Hello"; 68 69 //指针的值可以修改,指向的内容不能被修改 70 const char *psz1 = szBuff; 71 psz1 = NULL; 72 //psz1[0] = ‘a‘; //错误 73 74 //指针的值可以修改,指向的内容不能被修改 75 char const *psz2 = szBuff; 76 psz2 = NULL; 77 //psz2[0] = ‘b‘; //错误 78 79 //指针的值不能修改,指向的内容可以修改 80 char * const psz3 = szBuff; 81 //psz3 = NULL; 82 psz3[0] = ‘c‘; 83 84 //指针的值不能修改,指向的内容不能修改 85 char const * const psz4 = szBuff; 86 //psz4 = NULL; 87 //psz4[0] = ‘d‘; 88 89 //指针的值不能修改,指向的内容不能修改 90 const char * const psz5 = szBuff; 91 //psz5 = NULL; 92 //psz5[0] = ‘d‘; 93 94 总结: 95 1.当 const 在 * 的左边时,指针所指向的内容不能修改 96 2.当 const 在 * 的右边时,指针的值不能修改 97 3.当 * 的两边都有 const 时,指针的值和指针所指向的内容都不能修改 98 99 void fun( const int& nN1, const int& nN2) 100 { 101 //nN1、nN2 的值都不能被改变 102 cout<<nN1<<‘ ‘<<nN2; 103 } 104 105 调用函数--fun(2, 4); ------->输出:2 4 106 const引用,首先为 2和4 申请堆空间,然后地址 107 即 const--引用支持 常量 传给引用 108 109 110 //内联 inline 111 //注意:加了inline 编译器认为函数简单就内联,否者不内联(没有if for while。。。) 112 //1.通常用来替代有参宏 113 //2.比有参宏多了类型检查 114 //3.debug版不内联 115 //4.可以在头文件声明定义放一起,多文件包含没问题 116 //在类机构中,在类体内定义的成员函数都是内联函数 117 118 #define ADD(x,y) ((x) + (y)) 119 120 inline int Add(int nNum1, int nNum2) 121 { 122 return nNum1 + nNum2; 123 } 124 125 int main(int argc, char* argv[]) 126 { 127 cout << Add(1, 2) << endl; 128 cout << Add(2, 2) << endl; 129 cout << Add(3, 2) << endl; 130 131 cout << ADD(1.2, 2) << endl; 132 return 0; 133 } 134 135 136 137
标签:style blog color ar 使用 for sp 文件 div
原文地址:http://www.cnblogs.com/shuixi2013/p/4038701.html