从今天开始c++的学习,本篇博客主要是为了自己记录学习心得和历程,外人来看可能很多地方看不懂,请见谅。
以下是c++入门学习的一些基础,由于我的c语言已经学习完毕,c++的这些基础我会整理成博客,这一节主要是关于c++的入门,就是一些跟c语言用法不太一样的地方。
1.关于缺省参数
在c语言中函数不能设置缺省参数,例如f(int x,int y),此处需要我们进行传入参数。
在c++中我们可以设置缺省参数,即f(int x=1,int y=2),此处并不代表我们不需要传入参数,而只是我们也可以不选择传入参数直接写f(),此时就会默认调用1,2这两个数值,如果传入参数了,则会使用传入的参数。
2.关于引用
在c语言中我们使用指针,多次进行指针的传参是比较复杂的,在c++中我们使用引用。
在c++中引用的格式是int x=10,int &x1=x;此时x1就是x的引用,更改x1的值x也跟着更改,函数传参使传入引用值可以避免形参无法造成对于实参的影响。
对于引用的规则如下:
1.创建引用变量必须要进行初始化
int a = 10;
int& b = a;
int& c;
此处会报错的。没有初始化引用。
2.一个变量可以有多个引用,引用也可以有引用。
int a = 10;
int& b = a;
int& c = b;
int a = 10;
int& b = a;
int& c = b;
如代码,不过多阐述。
3.一个引用但凡引用了一个变量,就不可以再做更改了
int a = 10;
int c = 20;int& b = a;
int& b = c;
此处编译器会报错。
4.引用的应用。
1.用来函数传参,刚才已经提及。另一个应用是链表的头插。我们在c语言中的链表头插实现代码如下:
void pushfront(sltnode ** phead,int x)
{sltnode * newnode =(sltnode *)malloc(sizeof(phead));newnode->next=*phead;*phead=newnode;
}
但如果有了引用我们可以将参数部分变为sltnode &*phead,就不需要二级指针,把底下的代码的解引用全部去掉就行。
2.引用做返回值。
这个部分比较复杂,以后会专门讲解。长话短说,对于每个函数return的返回值,都是拷贝在一个临时变量中,然后进行返回的,但如果直接返回拷贝就省了这个操作,如果我们不想让其拷贝到临时变量中进行返回,是可以通过引用来进行返回的,这样就可以减少拷贝,对程序做了一小部分的优化.