现在的位置: 首页 > 综合 > 正文

c/c++ 基础(三) 指针与数组

2019年09月13日 ⁄ 综合 ⁄ 共 1338字 ⁄ 字号 评论关闭

直接上代码,观察结果:

#include <iostream>
#include <stdlib.h>
using namespace std;
	
int main()
{
	int Number [5]={10,20,30,40,50};
	int *p=Number;

	/*说明:数组正常遍历
	  
	*/
	cout<<endl<<"-------A-------- Number[i]---------------"<<endl;
	for (int i = 0; i < 5; ++i)
	{
		cout<<(Number[i])<<endl;
	}

	/*说明:数组名是一个常量指针,指向数组的第一个元素
	  
	  Number是一个指向Number数组的第一个元素的指针(也即是一个地址);
	  对Number进行加减运算,如Nuber+i(指向的是Number中的第i个对象,不是离Number开头的i字节处),也即Number首地址+i*(sizeof(int))
	*/
	cout<<endl<<"-------B-------- Number+i---------------"<<endl;
	for (int i = 0; i < 5; ++i)
	{
		cout<<(Number+i)<<endl;
	}

	/*
	   说明:*(p+i) : 取第(p+i*(sizeof(int))地址处元素的值
	*/
	cout<<endl<<"-------C-------- *(p+i)---------------"<<endl;
	for (int i = 0; i < 5; ++i)
	{
		cout<<*(p+i)<<endl;
	}

	/*
	   说明:*p+i : 指针p指向地址处的值+i
	*/
	cout<<endl<<"-------D-------- *p+i---------------"<<endl;
	for (int i = 0; i < 5; ++i)
	{
		cout<<*p+i<<endl;
	}

	/*
	   说明:数组名用作常来指针是合法的,常量指针用作数组名也是合法的
	*/
	cout<<endl<<"-------E-------- p[i]---------------"<<endl;
	for (int i = 0; i < 5; ++i)
	{
		cout<<p[i]<<endl;
	}

	/*
	    *p++是先取出*p的值,然后让p++
		(*p)++是先取出*p的值,让这个值++
		*(P++)是先取出*p的值,让p++
		所以,*p++等价于*(P++)
	*/
	// cout<<endl<<"-------F-------- *(p++)---------------"<<endl;
	// for (int i = 0; i < 5; ++i)
	// {
	// 	cout<<*(p++)<<endl;
	// }

	// cout<<endl<<"-------G-------- *p++---------------"<<endl;
	// for (int i = 0; i < 5; ++i)
	// {
	// 	cout<<*p++<<endl;
	// }

	// cout<<endl<<"-------H-------- (*p)++---------------"<<endl;
	// for (int i = 0; i < 5; ++i)
	// {
	// 	cout<<(*p)++<<endl;
	// }

	return 0;
}

打印结果如下:

如果要查看FGH的结果,只能是将F/G/H之一注释去掉,即一次只能查看FGH之一的结果。

抱歉!评论已关闭.