普通传参,不会改变原值;
引用传参或者指针传参,都会改变原值;
class Teacher { public: int age; string name; Teacher(int age,string name) { this->age = age; this->name = name; } Teacher() { age = 0; name = ""; } }; void showTeacher1(Teacher t) { t.age = 30; t.name = "Tom1"; cout << "普通传参 age= " << t.age <<" name= "<<t.name<< endl; } void showTeacher2(Teacher& t) { t.age = 40; t.name = "Tom2"; cout << "引用传参 age= " << t.age << " name= " << t.name << endl; } void showTeacher3(Teacher* t) { t->age = 50; t->name = "Tom3"; cout << "指针传参 age= " << t->age << " name= " << t->name << endl; } void tt4() { Teacher t = Teacher(20,"Jack"); showTeacher1(t); cout << "初始数值 age= " << t.age << " name= " << t.name << endl; showTeacher2(t); cout << "初始数值 age= " << t.age << " name= " << t.name << endl; showTeacher3(&t); cout << "初始数值 age= " << t.age << " name= " << t.name << endl; }
void tt3() { int a = 10, b = 20; (a < b ? a : b) = 30; cout << "a=" << a << " b=" << b << endl; } //a=30 b=20
1)C语言返回变量的值 C++语言是返回变量本身
C语言中的三目运算符返回的是变量值,不能作为左值使用
C++中的三目运算符可直接返回变量本身,因此可以出现在程序的任何地
方
2)注意:三目运算符可能返回的值中如果有一个是常量值,则不能作为左值
使用
(a < b ? 1 : b )= 30;
1)当使用<iostream.h>时,相当于在c中调用库函数,使用的是全局命名空间,也就是早期的c++实现;
2)当使用<iostream>的时候,该头文件没有定义全局命名空间,必须使用namespace std;这样才能正确使用cout。
指针的指向不可以改,指向的值可以改
指针的指向可以更改,指向的值不可以更改
特别地,当我们想指针的指向和指向的值都不可以修改时,可以结合上面两个,写两个const
void tt1() { const int a = 10; int* p = (int*)&a; cout << "a=" << a << "\n"; *p = 5; cout << "a=" << a << "\n"; } //a=10 //a = 10 void tt2() { int a = 10; int& b = a; int* p = &b; *p = 11; cout << "a=" << a << " b=" << b << endl; b = 12; cout << "a=" << a << " b=" << b << endl; } //a=11 b=11 //a = 12 b = 12
STL六大组件standard template library:
头文件标准格式:
头文件的作用:方便函数的调用;可以一次性包含很多函数;
不用头文件,每次调用一个函数,就要写一个函数声明,造成代码繁琐;
头文件还可以隐藏代码的实现部分,只提供函数接口,达到了保密的作用;
头文件:写函数的声明;
源文件:写函数的实现;
避免相互交替递归的包含,可能导致包含死循环,从而编译出错(包含深度1024);
include的本质就是拼接;
创建头文件的四个步骤:
1 创建一个.h的头文件;
2 创建 一个.cpp的源文件;
3 头文件里面,写函数的声明;
4源文件里面写函数的实现;