查找C ++程序的输出(指针)

1.查找以下C ++程序的输出。

#include<iostream>
#include<stdlib.h>
using namespace std;

int main(){ 
	float x=5.999;
	float *y,*z;
	y=&x;
	z=y;
	cout<<x<<","<<*(&x)<<","<<*y<<","<<*z<<"\n";
	return 0;
}

输出结果

5.999,5.999,5.999,5.999

说明

原因是x给出了存储在变量x中的值。*(&x)给出存储在地址&x中的数据值,即x的数据值。由于y指向x(..y =&x),因此* y给出x的值。并且由于z与y具有相同的地址,因此* z还给出x的值,即5.999。

2.查找以下C ++程序的输出。

#include<iostream>
using namespace std;

int main(){  
	int track[]={10,20,30,40},*striker;

	striker=track;
	track[1]+=30;
	cout<<"Striker>"<<*striker<<endl;
	*striker-=10;
	striker++;
	cout<<"[email protected]"<<*striker<<endl;
	striker+=2;
	cout<<"[email protected]"<<*striker<<endl;
	cout<<"Reset To"<<track[0]<<endl;

	return 0;
}

输出结果

Striker>10
[email protected]
[email protected]
Reset To0

说明

数组磁道包含4个元素{10,20,30,40},指针罢工者持有数组磁道的基地址,即track [0]的地址。
1)* striker保留track [0]的数据值,即10。* striker中的减10将使track [0] = 0。
2)递增指针前锋给出轨道的下一个位置,即1。现在,* striker给出track [1]的数据值。
3)再次通过增加2,罢工者到达阵列磁道的4个地址,即磁道[4]。
4)最后在track [0]上打印该值为0(请参阅步骤1)。