数组和数组指针

1.定义一个数组类型
void main()
{
	typedef int(MyArray)[5];  //定义一个数组数据类型
	MyArray myarray;  //等于int myarray[5];
	for (int i = 0; i < sizeof(myarray) / sizeof(myarray[0]); i++)
	{
		myarray[i] = i + 1;
	}
	for (int i=0;i< sizeof(myarray) / sizeof(myarray[0]);i++)
	{
		printf("%d ",myarray[i]);
	}
	printf("\n");
	printf("myarray:%d , myarray+1:%d\n",myarray,myarray+1);  //myarray为代表首元素地址 步长为4
	printf("&myarray:%d , &myarray+1:%d\n", &myarray, &myarray + 1); //&myarray代表数组地址,步长为20
	system("pause");
	return ;
}

 

 

2.定义数组指针的三种方法

void main()
{
	typedef int(MyArray)[5];  //定义一个数组类型
	MyArray *pArray;  //定义一个指针变量 指向数组
	MyArray myarray;  //等于int myarray[5];  相当于一级指针
	
	pArray = &myarray; //pArray指向数组的地址  相当于二级指针  pArray步长为20
	for (int i = 0; i < sizeof(myarray) / sizeof(myarray[0]); i++)
	{
		(*pArray)[i] = i + 1;
	}
	for (int i = 0; i < sizeof(myarray) / sizeof(myarray[0]); i++)
	{
		printf("%d ", (*pArray)[i]);
	}
}
//定义声明一个数组指针类型
void main()
{ typedef int(*PArrayType)[5]; PArrayType pArray; //定义个指针变量 int a[5]; pArray = &a; for (int i = 0; i < sizeof(a)/sizeof(a[0]); i++) { (*pArray)[i] = i + 1; } for (int i = 0; i < sizeof(a) / sizeof(a[0]); i++) { printf("%d ", (*pArray)[i]); }
}
void main()
{
int(*pArray)[5]; //直接定义一个指向数组的 数组指针变量 int a[5]; pArray = &a; for (int i = 0; i < sizeof(a)/sizeof(a[0]); i++) { (*pArray)[i] = i + 1; } for (int i = 0; i < sizeof(a) / sizeof(a[0]); i++) { printf("%d ", (*pArray)[i]); }
}

  

 

 

3.多维数组

void main()
{
	int a[3][5];
	int num = 1;
	for (int i = 0; i < 3; i++)
	{
		for (int j = 0; j < 5; j++)
		{
			a[i][j] = num++;
		}
	}
	for (int i = 0; i < 3; i++)
	{
		for (int j = 0; j < 5; j++)
		{
			printf("%4d",a[i][j]);
		}
		printf("\n");
	}
	printf("a:%d , a+1:%d",a,a+1);          //a代表第一行的首地址 a+1代表第二行的首地址 步长为4B*5=20
	printf("&a:%d , &a+1:%d", &a, &a + 1);  //&a代表二维数组的首地址,步长为4B*3*5=50
}

 

  

4.多维数组和指针

	int a[3][5];
	int num = 1;
	for (int i = 0; i < 3; i++)
	{
		for (int j = 0; j < 5; j++)
		{
			a[i][j] = num++;
		}
	}
	for (int i = 0; i < 3; i++)
	{
		for (int j = 0; j < 5; j++)
		{
			printf("%4d",a[i][j]);
		}
		printf("\n");
	}
	printf("a:%d , a+1:%d \n",a,a+1);          //a代表第一行的首地址 a+1代表第二行的首地址 步长为4B*5=20
	printf("&a:%d , &a+1:%d \n", &a, &a + 1);  //&a代表二维数组的首地址,步长为4B*3*5=50



	int(*pArray)[5];  //定义一个指向数组类型的指针变量
	pArray = a;   //让指针指向a(二维数组第一行的首地址)
	for (int i = 0; i < 3; i++)
	{
		for (int j = 0; j < 5; j++)
		{
			printf("%4d", pArray[i][j]);   //二维数组的本质是二级指针
          } printf("\n"); }

 

 

 

转载于:https://www.cnblogs.com/sclu/p/11278007.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值