C44-值传递与地址传递
原题链接:28705.NoteSC++2025-02-15 12:12:57
发布于:江苏
一、数组中的地址
#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














有帮助,赞一个