C44-值传递与地址传递
2025-02-15 12:12:57
发布于:江苏
17阅读
0回复
0点赞
一、数组中的地址
#include<iostream>
using namespace std;
int main() {
int a[100] = {0, 1,2,3,4, 5, 6, 7};
cout << a << endl; //数组名表示是数组的首元素地址
// 取地址符号
cout << &(a[0]) << endl; //80
cout << &(a[1]) << endl; //84
cout << &(a[2]) << endl; //88
cout << &(a[3]) << endl; //8c
return 0;
}
二、指针的定义
取地址符号
取值符号
#include<iostream>
using namespace std;
int main() {
int a = 23;
cout << &a << endl; //取地址符号
//地址, 指针, ,如何定义一个指针(地址)
int *p = &a; //定义了一个int类型的指针
char *p1, *p2, *p3;
double *p4;
//取值符号 *
cout << p << endl;
cout << *p << endl; //地址中的值
return 0;
}
三、函数的传参方式
//全局变量, 局部变量, 作用域(生命周期)
#include<iostream>
using namespace std;
//第1种传参方式: 值传递(不改变原来的值)
void change(int a, int b){
int t = a; a = b; b = t;
// printf("change: a=%d b=%d\n", a, b);
}
//第2种传参方式: 地址传递(改变原来的值)
void change2(int *a, int *b){
int t = *a;
*a = *b; //取值符号
*b = t;
}
int main() {
int a = 11, b = 22;
printf("a=%d b=%d\n", a, b);
// change(a, b);
change2(&a, &b); //地址
printf("a=%d b=%d\n", a, b);
return 0;
}
四、练习
1. 距离函数
#include <bits/stdc++.h> //iomanip
using namespace std;
double len(int x1, int y1, int x2, int y2){
double a = abs(x2-x1);
double b = abs(y1-y2);
return sqrt(a*a + b*b);
}
int main() {
int x1, x2, x3, y1, y2, y3;
cin>>x1>>y1;
cin>>x2>>y2;
cin>>x3>>y3;
cout << fixed << setprecision(2) << len(x1,y1,x2,y2) + len(x1,y1,x3,y3) + len(x2,y2,x3,y3);
return 0;
}
全部评论 1
这是咱老师
2025-02-23 来自 安徽
0
有帮助,赞一个