C++ 动态内存(2)

C++的语法中是用new 和delete来 分配和删除内存。

#include<iostream>
using namespace std;
void print(int* array,int len){//方法用于打印学生的成绩
	for(int i=0;i<len;i++){
		cout<<"学生"<<i<<"的成绩"<<array[i]<<endl;
	}
}
int main(){
	int len;
	int add;
	int sum=len+add;
	cout<<"请输入学生总数"<<endl;
	cin>>len;
	int *grade;
	grade=new int[len];//动态数组,分配内存
	for(int i=0;i<len;i++){
		cout<<"请输入学生"<<i<<"的成绩"<<endl;
		cin>>*(grade+i);
	}

	print(grade,len);
	delete []grade;//用完以后删除
	 grade=new int[add];//重新分配
	cout<<"请输入增加学生的数量"<<endl;
	cin>>add;
	for(int j=len;j<(add+len);j++){
		cout<<"请输入第"<<j<<"个学生的成绩"<<endl;
		cin>>*(grade+j);
	}
	print(grade,add+len);
	delete []grade;//删除
	return 0;
}
程序很简单,不过有一点。打印结果很悲剧,不是我想要的结构

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

请输入学生总数
2
请输入学生0的成绩
89
请输入学生1的成绩
90
学生0的成绩89
学生1的成绩90
请输入增加学生的数量
2
请输入第2个学生的成绩
909
请输入第3个学生的成绩
89
学生0的成绩-842150451
学生1的成绩-842150451
学生2的成绩909
学生3的成绩89
Press any key to continue
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
我想重新打印学生的成绩。可是 学生0和1的成绩却找不到,当然是我已经删除了第一次分配的内存。所以,当我重新分配的时候,程序只知道我 重新分配的

那块内存,也就是2和3的成绩。如果是覆盖的话,可能效果就会出来。不知道 我这样理解 对还是不对。如有看到小弟文章的大神 请指点。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值