第56回
注意:我们一般将不需要修改的引用形参都定义为 const (因为定义为const的引用形参与 实参间的参数传递更加灵活)(或者说,非const引用形参不能用const对象初始化,也不能用字面值初始化,也不能用产生右值的表达式实参初始化)
&v1 和 &v2 是引用,引用的是一个指针,换言之,v1和v2实际上是一个指针的别名,
第57回
第58回
注意:下图中的3种写法效果是一样的,传递的参数都是指针(数组的第一个元素的地址);注意,第红框中的10是没有用的,C++会自动忽略掉这个10
多维数组的传递
注意图1中的 int (*x)[10] 不能写成 int *x[10] ,第二种写法表示:x是一个数组,数组里有10个数,每个数都是指针(因为是 [ ] 的优先级高于 * )
注意:如下图所示,第一个红框的语句是正确的,第二个红框的语句是错误的;原因在于:形参中,const表明 x2是一个指针,而且该指针指向的数是一个常数!!!所以在函数中不能改变 *x2 的值,但是指针的值(即:x2)是可以改变的!!!
注意,c++中的字符数组中最后一个元素是NULL,注意不要写成null,因为二者是不相同的
第59回
argc表示 用来作命令行选项的个数,argv是一个指针,指向一个字符串数组,该数组里每个元素都是一个字符串,这些字符串也就是命令行选项,(注意,argv [0] 不是命令行选项)
第60回
注意main()函数要么不返回值,要返回就只能返回int类型(国际标准)
注意,下图中,b=add_one(a) 的 b 是 copy 了一份x的数值 进行return,所以b是copy得到的return x的数值,所以,红框中,后面即使改变b值,也只是改变copy来的值,而不会影响a的数值,最终结果为 a=2 , b =3
注意,如下图所示,如果返回的是引用类型(第一个红框),接收的也是引用类型(第二个红框),则 return 的 x 就是返回的 a值,然后b接收的就不再是x的copy了,而是接收的引用,即接收的就是a,所以后面的++b其实就是++a,所以最终结果为
a = 3 , b = 3