• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

Hánina Chata

为什么不问问神奇海螺呢?
  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

C++面向对象入门:实验一

一、实验目的

  1. 学习动态内存分配的原理与指针变量的使用;

  2. 了解并掌握引用的定义和用法;

  3. 学习指向结构体变量的指针使用方法;

  4. 学习指针算法在数组中的应用;

  5. 动态数组的内存管理、查找和交换。

二、实验内容

1. 动态内存分配与指向它的指针变量实例

输入并运行程序,运行出结果,并解释每行程序的作用。

#include<iostream>
using namespace std;
int main(){
	int *pa,i;
	pa=new int[5];
	if(pa==NULL)
		exit(0);
	*(pa+1)=3;
		for(i=0;i<5;i++)
			cout<<*(pa+i)<<" ";
	delete[] pa;
	return 0;
}

1.1 程序分析

	int *pa,i;	声明整型指针pa和整型变量i
	pa=new int[5];	动态分配5个整数的数组空间
	if(pa==NULL)	条件判断内存是否分配成功
		exit(0);	分配失败则退出
	*(pa+1)=3;	给数组中的第二个元素赋值为3
		for(i=0;i<5;i++)	循环遍历数组中的所有元素
			cout<<*(pa+i)<<" ";	输出数组中的各数,中间空格隔开
	delete[] pa;	释放动态分配的内存
	return 0;	结束

1.2 运行结果

-842150451 3 -842150451 -842150451 -842150451

2. 引用的定义和使用实例

输入并运行程序,运行出结果,并解释每行程序的作用。

#include<iostream>
using namespace std;
int main(){
	int n=10;
	int &rn=n;
	cout<<"n="<<n<<endl;
	cout<<"rn="<<rn<<endl;
	cout<<"&n="<<&n<<endl;
	cout<<"&rn="<<&rn<<endl;
	return 0;
}

2.1 程序分析

	int n=10;	定义整型变量n并赋值为10
	int &rn=n;	定义rn为n的引用
	cout<<"n="<<n<<endl;	输出n的值
	cout<<"rn="<<rn<<endl;	输出rn的值
	cout<<"&n="<<&n<<endl;	输出n的地址
	cout<<"&rn="<<&rn<<endl;	输出rn的地址
	return 0;	结束

2.2 运行结果

n=10
rn=10
&n=00B3FE9C
&rn=00B3FE9C

3. 指向结构体变量的指针应用实例

输入并运行程序,运行出结果,并解释每行程序的作用。

#include<iostream>
using namespace std;
struct student{
	long int num;
	char name[4];
	float score;
};
int main(){
	student stu={89031,"LiL",96};
	student *pstu=&stu;
	cout<<stu.num<<" "<<stu.name<<" "<<stu.score<<endl;
	cout<<pstu->num<<" "<<pstu->name<<" "<<pstu->score<<endl;
	cout<<(*pstu).num<<" "<<(*pstu).name<<" "<<(*pstu).score<<endl;
	return 0;
}

3.1 程序分析

struct student{	定义student学生结构体
	long int num;	定义长整型变量,学号
	char name[4];定义一个4个字符的数组,姓名
	float score;定义浮点数变量,成绩
};
int main(){
	student stu={89031,"LiL",96};	定义并初始化结构体变量
	student *pstu=&stu;	定义结构体指针指向stu
	cout<<stu.num<<" "<<stu.name<<" "<<stu.score<<endl;	访问上面定义的三个变量
	cout<<pstu->num<<" "<<pstu->name<<" "<<pstu->score<<endl;	再使用指针箭头访问
	cout<<(*pstu).num<<" "<<(*pstu).name<<" "<<(*pstu).score<<endl;
	return 0;

3.2 运行结果

89031 LiL 96
89031 LiL 96
89031 LiL 96

4. 程序设计

定义一个动态整型数组(数组的长度由用户输人),循环为数组元素赋值。使用指针将数组中最小的数与第一个数交换,最大的数与最后一个数交换,输出交换后的数组元素。

4.1 源程序代码

#include<iostream>
using namespace std;
int main(){
	int n;
	cout<<"数组长度:";
	cin>>n;
	int *arr=new int[n];
	cout<<"需要输入"<<n<<"个数";
	for(int i=0;i<n;i++){
		cin>>arr[i];
	}
	int *min=arr;
	int *max=arr;
	for(int *p=arr+1;p<arr+n;p++){
		if(*p<*min){
			min=p;}
		if(*p>*max){
			max=p;}
	}
	if(min!=arr){
		int t=*arr;
		*arr=*min;
		*min=t;}
	if(max!=arr+n-1){
		int t=*(arr+n-1);
		*(arr+n-1)=*max;
		*max=t;}
	cout<<"输出:";
	for(int*p=arr;p<arr+n;p++){
		cout<<*p<<" ";}
	cout<<endl;
	delete[] arr;
	return 0;
}

4.2 程序分析

首先定义一个数组长度变量n,之后输入具体长度、动态分配n个整数的数组。再向数组输入规定个数的元素,用一个循环读取所有元素。然后分别定义一个最小值和一个最大值的指针,经过遍历找到对应的最小值后更新出一个新的最小值、同样找到最大值后更新出一个新的最大值。

条件判断:如果目前的最小值不在第一位则与第一位交换;如果最大值不在最后一位则与最后一位交换。交换完成后用指针遍历输出各元素,最后释放动态数组内存,返回结束。

三、实验总结

通过实验进一步掌握动态内存的分配和释放,理解引用的定义和用法,并且巩固了对结构体指针的访问方式,也明白了如何解决指针和数组相结合的实际问题。

By @哈娜Official(HanaNováčková:https://www.cnblogs.com/hanina-chata/p/19547852)

posted on 2026-01-29 13:15  HanaNováčková  阅读(2)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3