1. c++中string类及其常用函数 2. C++中引用类型及引用传递 3. 给函数形参设定默认值 4. 函数形参及传递 5. 指针做形参传递时的一个小发现
1. c++中string类及其常用函数
string text1{ "Heavy rains are pushing water levels beyond the limit." }; //用string类来定义字符串 string text2, text3; int k; text2 = "Sluice gates at Three Gorges Dam opened to discharge water."; text3 = text1 + text2; cout << text3 << endl; k = text3.find("Heavy");//在text3中查找Heavey,并返回 H 所在位置 text3.erase(k,sizeof("Heavy")-1); //从text中删除Heavy. text3.insert(k, "Strong"); C++中引用类型及引用传递作用: (1) 函数间的引用传递,来直接操作实参变量内存。
int a = 1, b = 2; //定义一个a变量的引用变量b cout << &a << " " << &b << endl; //输出变量地址 地址一样 cout << a << " " << b << endl; //数值一样利用应用传递直接操作实参变量
int main() { int a = 1, b = 2; cout << a << '\t' << b << endl; //1 2 swap(a, b); cout << a << '\t' << b << endl; // 2 1 system("pause"); return 0; } void swap(int &x, int &y) { int temp; temp = x; x = y; y = temp; } 给函数形参设定默认值 C++ 中可以给自定义的函数形参设定默认值,这样在没有实参传入时,形参使用默认值;同时也可以部分设定默认值,但是设定默认值顺序为从右到左,依次设定默认值。不能交叉。例如,
void swap(int x = 0, int y = 0) { int temp; temp = x; x = y; y = temp; } 调用格式: swap(); //正确,形参x y使用默认值 swap(1); //正确,形参x =1,y=0使用默认值 swap(1,2); //正确,形参x =1,y=2使用实参4. 函数形参及传递
C/C++ 中函数传递方式: (1) 值传递;——C/C++ (2) 引用传递 ;——C++ (3) 指针传递;
数组元素作为函数实参,对应形参为 变量,每次传递一个数值,为值传递; 数组名作为函数实参,对应形参为数组,一次传递整个数组,其中形参数组和是参数组公用同实参数组内存空间,改变形参数组即可改变实参数组。类似于引用传递。——c/c++一致的
结构体变量作为函数实参,对应形参为同类型结构体,为值传递,注意,对形参结构体成员的修改不影响实参结构体。
5. 指针做形参传递时的一个小发现
传递两个值的指针进入函数,对两个值进行交换的程序。看着很简单,但第一还是错了。。。
void swap(int* p1, int *p2) { int *t = p1; //*t = *p1 *p1 = *p2; // *t = *p1 = *p2; *p2 = *t; //*p2 = *t = *p1 最终两个值都有p2所指参数的值,没有发生交换,并且发生错误 } // 指针只认地址,不认数据 void swap(int* p1, int *p2) { int t = *p1; *p1 = *p2; *p2 = t; //两个值发生交换,正确 }