1. 引用的声明及访问
代码:
#include<iostream>
using namespace std;
int x = 5, y =10;
int &r = x;//r为x的变量别名
void print()
{cout << "x=" << x << "y" << y << "r=" << r << endl;cout << " Address of x" << &x << endl;//输入变量x的内存地址cout << "Address of y" << &y << endl;cout << "Address of r" << &r << endl;
}
int main()
{print() ;//调用输出函数r = y;//赋值print() ;y = 100;//再赋值x = y - 10;//x,y同时改变print();return 0;
}
运行结果:
x=5 y=10 r=5Address of x: 0x7ffeefbff53c
Address of y: 0x7ffeefbff538
Address of r: 0x7ffeefbff53c
x=10 y=10 r=10Address of x: 0x7ffeefbff53c
Address of y: 0x7ffeefbff538
Address of r: 0x7ffeefbff53c
x=90 y=100 r=90Address of x: 0x7ffeefbff53c
Address of y: 0x7ffeefbff538
Address of r: 0x7ffeefbff53c
2. 通过引用参数修改实际参数的值
代码:
#include <iostream>
using namespace std;
void swap ( int &x, int &y )//引用参数成为实际参数变量额、的别名
{int t = x;x = y;y = t;
}
int main ()
{int a = 3, b = 5, d = 20, c = 10;cout << "a=" << " b=" << b << endl ;swap (a,b) ;cout << "a=" << a << " b=" << b << endl;swap ( c, d);cout << "c=" << c << " d=" << d << endl;
}
运行结果:
a = 3 b = 5
a =5 b = 3
c =10 d = 20
c = 20 d =10
3. 三种参数的使用示例
#include<iostream>
using namespace std;
int Fun(const int &x, int &y,int z)
{y++;z++;return y;
}
int main ()
{int a= 1, b = 3, c = 3, d = 0;cout << "a=" << a << "B=" << b << "c=" << c << "d=" << d << endl;d =Fun(a, b, c);cout << "a=" << a << " b=" << b << "c=" << c << "d=" << d << endl;return 0;
}
结果:
a=1 b=2 c=3 d=0
a=1 b=3 c=3 d=3
4.动态空间管理示例
#include<iostream>
#include <ctime>
#include <cmath>
#include <iomanip>
using namespace std;
const int N =30;
int main()
{int *p, *sum, i;sum= new int (0);p = new int (N);if(p==NULL) {cout << "allocation failure.\n";return 0;}srand( time(NULL));for(i =0; i < N;i++){p[i] = rand() % 100;if(p[i] %2)(*sum) ++;}for(i=0;i <N;i++){cout << setw(4) << p[i];if((i+1) % 10==0)cout << endl;}cout << "the number of odd is:" << *sum << endl;delete []p;delete sum;return 0;
}
运行结果:
43 66 71 26 11 46 64 80 24 3136 56 42 88 40 82 10 85 68 6984 47 91 44 14 57 88 40 56 18
the number of odd is: 10
5. 异常处理的步骤
#include<iostream>
using namespace std;
int divide(int x, int y)
{if(y == 0) throw y;return x /y;}
int main ()
{int a = 10 , b= 5, c =0 ;try{cout <<"a/b" << divide ( a,b) << endl;cout <<"b/a" << divide ( b,a) << endl;cout <<"a/c" << divide ( a,c) << endl;cout <<"c/b" << divide ( c,b) << endl;}catch (int ) {cout << "except of divide zero" << endl;}cout << "calculate finished" << endl;return 0;}
运行结果
a/b2
b/a0.5
except of divide zero
calculate finished
6.课后习题
1.
#include <iostream>
using namespace std;
int main()
{int a, b, c;char ch;cin >> a >> ch >> b >> c;cout << a << endl << ch << endl << b << endl << c;return 0;
}
运行结果:
1
A
2
3
2.
#include <iostream>
using namespace std;
int main()
{int arr[4] = {1, 2, 3, 4}, i;int *a = arr;int &p = a; p++;*p = 100;cout << *a << "\t" << *p << endl;for (i = 0; i < 4; i++)cout << arr[i] << "\t";cout << endl;int b = 10;p = &b;cout << *a << "\t" << *p << endl;for (i = 0; i < 4; i++)cout << arr[i] << "\t";cout << endl;return 0;
}
运行结果:
100 100
1 100 3 4
10 10
1 100 3 4
3.
#include <iostream>
using namespace std;
int i = 0;
int main()
{int i = 5;{int i = 7;cout << "i=" << i << "::i=" << ::i << endl;cout << "::i=" << ::i << endl;::i = 1;cout << "::i=" << ::i << endl;}cout << "i=" << i << endl;cout << "please input x,y:";::i = 6;i += ::i;::i = 100;cout << "i=" << i << endl;cout << "::i=" << ::i << endl;return 0;
}
运行结果:
i=7::i=0
::i=0
::i=1
i=5
please input x,y:
i=6
::i=100
4.
#include <iostream>
using namespace std;
void f(double x = 50.6, int y = 10, char z = 'A');
int main()
{double a = 216.34;int b = 2;char c = 'E';f();f(a);f(a, b);f(a, b, c);return 0;
}
void f(double x, int y, char z)
{cout << "x=" << x << "\t" << "y=" << y << "\t";cout << "z=" << z << endl;
}
运行结果:
x=50.6 y=10 z=A
x=216.34 y=10 z=A
x=216.34 y=2 z=A
x=216.34 y=2 z=E
5.
#include <iostream>
using namespace std;
int & s(const int &a, int &b)
{b += a;return b;
}
int main()
{int x = 500, y = 1000, z = 0;cout << x << '\t' << y << '\t' << z << '\n';s(x, y);cout << x << '\t' << y << '\t' << z << '\n';z=s(x, y);cout << x << '\t' << y << '\t' << z << '\n';s(x, y) = 200;cout << x << '\t' << y << '\t' << z << '\n';return 0;
}
运行结果:
500 1000 0
500 1500 0
500 2000 2000
500 200 2000
6.
#include <iostream>
using namespace std;
void fun(int x, int &y)
{x += y;y += x;
}
int main()
{int x = 5, y = 10;fun(x, y);fun(y, x);cout << "x=" << x << ",y=" << y << endl;return 0;
}
运行结果:
x=25 , y=25
完成方式:根据书本例题,在vs code上打出代码,并运行结果,复制到markdown里面,我有时还使用豆包,我认为比起deepseek来豆包的反应时间更短,而且用了这么就我也习惯了他的使用方式。有事因为某些原因,代码不能运行也可以直接在豆包里面,得到解答并直接运行.