指针学习(四)

struct inflatable //结构定义
{
	char name[20];
	float volume;
	double price;
};
int main()
{
	using namespace std;
	inflatable * ps=new inflatable;//给结构分配内存空间
	cout<<"Enter name of inflatable item :";
	cin.get(ps->name,20);//第一种方法
	cout<<"Enter volume in cubic feet :";
	cin>>(*ps).volume;//第二种方法
	cout<<"Enter price : $";
	cin>>ps->price;
	cout<<"Name: "<<(*ps).name<<endl;
	cout<<"volume: "<<ps->volume<<endl;
	cout<<"price: "<<ps->price<<endl;
	delete ps; //释放指针内存空间
	return 0;
}
using namespace std;
char * getname(void);
//这段代码中new和delete分别在不同的代码段中是很不可取的
int main()
{
	char * name;//创建指针
	name=getname();
	cout<<name<<" at "<<(int*)name<<"\n";
	delete [] name;

	name=getname();
	cout<<name<<" at "<<(int*)name<<"\n";
	delete [] name; //再次清空

	return 0;
}
char * getname()
{
	char temp[80];
	cout<<"Enter last name: "<<endl;
	cin>>temp;
	char * pn=new char[strlen(temp+1)];
	strcpy(pn,temp);
	return pn;
}
//自动存储一般是用于局部变量  存储在栈中 后进先出 LIFO
//静态存储 一般用于全局变量 
//动态存储用于new的变量 存储在堆或者自由存储空间中


struct antarctica_years_end
{
	int year;
};
int main()
{
	using namespace std;
	antarctica_years_end s01,s02,s03;
	s01.year=1998;
	antarctica_years_end * pa= &s02;
	pa->year=1999;
	antarctica_years_end trio[3];
	trio[0].year=2003;
	cout<<trio->year<<endl;
	const antarctica_years_end * arp[3]={&s01,&s02,&s03};
	cout<<arp[1]->year<<endl;
	const antarctica_years_end ** ppa=arp;
	auto ppb=arp;
	cout<<(*ppa)->year<<endl;
	cout<<(*(ppb+1))->year<<endl;
	return 0;
}
//结果 2003 1999 1998 1999 这个例子仅仅停留在能看懂的水平 过段时间需要重新温习



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值