首页 > 代码库 > C++第二课(2013.9.27 )
C++第二课(2013.9.27 )
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 4106 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
C++第二课(2013.9.27 )
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。