1 #include <bits/stdc++.h>
2 using namespace std;
3 int add(int num)//按值传递
4 {
5 num++;
6 }
7 int add1(int& num)//参数传递(引用传递)
8 {
9 num++;
10 }
11
12 int main()
13 {
14 int num = 10;
15 add(num);//按值传递,传递的num是一个副本,地址空间相与之前发生了变化
16 cout << num << endl;//10
17 add1(num);//引用传递,num是原数据的别名,地址相同
18 cout << num << endl;//11
19 return 0;
20 }
使用const关键字防止不希望修改的数组
1 #include <bits/stdc++.h>
2 using namespace std;
3 void show(int array[], int len)
4 {
5 for(int i = 0; i < len ;i++)
6 {
7 cout << array[i]++ << " , ";
8 }
9 cout << endl;
10 }
11 void show1(const int array[], int len)//当我们不希望数组内容在函数体里面被修改的时候,我们可以对数组参数加const,变成一个常量
12 {
13 for(int i = 0; i < len ;i++)
14 {
15 //报错
16 //cout << array[i]++ << " , ";
17 }
18 cout << endl;
19 }
20 void show2(const int* begin,const int* end)//使用数组区间的函数
21 {
22 for(const int* ptr = begin; ptr <= end; ptr++){
23 cout <<*ptr << ",";
24 }
25 }
26
27 int main()
28 {
29 int array[5] = {1,2,3,4,5};
30 int array1[5] = {1,2,3,4,5};
31 show(array,5);//1 , 2 , 3 , 4 , 5 ,
32 show(array,5);//2 , 3 , 4 , 5 , 6 ,
33 const int* ptr_begin = array;
34 show2(ptr_begin, ptr_begin - 1 + sizeof(array)/sizeof(int));
35 return 0;
36 }
1 #include <bits/stdc++.h>
2 using namespace std;
3 void show(double (*arr)[5],int len){//二维数组做参数,行数大小要做参数传入
4 for(int i = 0; i < len; i++)
5 {
6 for(int j = 0; j < 5; j++){
7 cout << arr[i][j] << " || " << *(*(arr + i)+j) << " , " ;
8 }
9 cout <<endl;
10 }
11 }
12 int main()
13 {
14 double array[2][5] = {
15 { 1, 2, 3, 4, 5},
16 { 1.1, 2.1, 33, 3.2,1.9}
17 };
18 show(array,2);
19 return 0;
20 }
函数指针是指向函数的一种指针
1 #include <bits/stdc++.h>
2 using namespace std;
3 int isZero = 0;
4 double add(double a, double b)
5 {
6 return a + b;
7 }
8 double subtraction(double a,double b)
9 {
10 return a - b;
11 }
12 double mul(double a, double b)
13 {
14 return a * b;
15 }
16 double division(double a, double b)
17 {
18 if(b == 0){
19 cout << "分母不可为0";
20 isZero = 1;
21 return 0;
22 }else{
23 return a/b;
24 }
25 }
26 void print(double (*ptr)(double a,double b),double c, double d)//把函数指针做为参数传入
27 {
28 double c1=ptr(c, d);
29 if(isZero == 0){
30 cout << c1;
31 }else{
32 isZero = 0;
33 }
34 }
35 int main()
36 {
37 double a, b;
38 char ch = ' ';
39 int flag = 0;
40 double (*ptr)(double a, double b);
41 while(true){
42 cout << "-----请输入要计算的两个数------" << endl;
43 cin >> a >> b;
44 cout << "请输入要执行何种计算(+,-,*,/)" << endl;
45 cin >> ch;
46 switch(ch)
47 {
48
49 case '+': ptr = add; break;//函数指针作为各个函数的载体执行相应的运算,即该指针指向指定函数所在内存首地址
50 case '-': ptr = subtraction; break;
51 case '*': ptr = mul; break;
52 case '/': ptr = division; break;
53 default: cout << "输入错误,重新开始" << endl; flag = 1;
54 }
55 if(flag == 1) { flag = 0;continue;};
56 cout << "结果是:";
57 print(ptr,a,b);
58 cout << endl;
59 cout << "是否跳出循环(y/n)" << endl;
60 char ch1 = ' ';
61 while(cin >> ch1)
62 {
63 if(ch1 == 'y'){
64 break;
65 }else if(ch1 == 'n'){
66 break;
67 }else{
68 cout << "请输入y or n" << endl;
69 }
70 }
71 if(ch1 == 'n') continue;
72 else break;
73 }
74 return 0;
75 }
作者:你的雷哥
本文版权归作者所有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。