一、实参与形参的结合方式 1.传值传递 这一种方式是单向的,也就是说最终形参的变化并不会影响实参的变化值。 2.传址传递() 这一种方式是双向的,相当于形参是实参的另一个别
一、实参与形参的结合方式
1.传值传递
这一种方式是单向的,也就是说最终形参的变化并不会影响实参的变化值。
2.传址传递(&)
这一种方式是双向的,相当于形参是实参的另一个别称,这样形参的变化就会影响实参的值。(即实参与形参均指向相同的地址)
二、&在c/c++中的作用
1.取地址:
如
1 int *p=&a;
这行代码的意思是说声明一个指针p指向a的地址。
2.引用:
如传址传递。
3.按位与:
按位与运算 按位与运算符"&"是双目运算符。其功能是参与运算的两数各对应的二进位相与。只要对应的二个二进位都为1时,结果位就为1。
4.&&表示且的关系
三、const &a与传值传递的区别:
1 template<class T> 2 T abc(const &a,const &b,const &c) 3 { 4 return a+b*c 5 6 }
在上面一个例子里,前者比后者的更加节省内存,后者的需要进行声明内存和删除内存的处理,所以前者更优。
四、*在c/c++中的作用:
1.乘法
2.声明指针
3.取指针所对应地址的值:
如:
1 int *a = 1; 2 int b = *a;
五、条件编译:
1 /*写在文件开头*/ 2 #ifndef XXX 3 #define XXX 4 5 6 7 /*写在文件结尾*/ 8 #endif
条件编译的作用主要是为了防止重复声明。
六、为一个二维数组分配内存空间
1 template<class T> 2 bool make2dArrray(T ** &x,int numberOfRows,int numberOfCloumns) 3 {//创建一个二维数组 4 5 try{ 6 7 //创建行指针 8 x = new T* [numberOfRows]; 9 10 //为每一行分配空间 11 for(int i=0;i<numberOfRows,i++) 12 x[i] = new int [numberOfColumns]; 13 return true; 14 15 } 16 catch(bad_alloc){return false;} 17 18 19 }
前人总结,牢记。