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=5
Address of x: 0x7ffeefbff53c
Address of y: 0x7ffeefbff538
Address of r: 0x7ffeefbff53c
x=10 y=10 r=10
Address of x: 0x7ffeefbff53c
Address of y: 0x7ffeefbff538
Address of r: 0x7ffeefbff53c
x=90 y=100 r=90
Address 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 31
36 56 42 88 40 82 10 85 68 69
84 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来豆包的反应时间更短,而且用了这么就我也习惯了他的使用方式。有事因为某些原因,代码不能运行也可以直接在豆包里面,得到解答并直接运行.