指针数组和数组指针

数组指针:

         数组指针就是指向数组的指针,它表示的是一个指针,这个指针指向的是一个数组,它的重点是指针。

数组指针:类型名 (*指针名)[数组长度]; 首先我们定义一个数组指针,指针取名为p

  int(*p)[4];

int (*p)[4];p先与*结合,形成一个指针,该指针指向的是有5个整形元素的素组,p就是指向数组元素地址的指针,本质为指针。 

例如,int( *p)[8]声明了一个指针,该指针指向了一个有8个int型元素的数组。下面给出一个数组指针的示例。

#include<stdio.h>
#include<stdlib.h>
void main()
{
	int b[12]={1,2,3,4,5,6,7,8,9,10,11,12};
    int(*p)[4];
	p = b;
	printf("%d\n",**(++p));
}

这个结果为5。

上例中,p是一个数组指针,它指向一个包含有4个int类型数组的指针,刚开始p被初始化为指向数组b的首地址,++p相当于把p所指向的地址向后移动4个int所占用的空间,此时p指向数组(5,6,7,8},语句*(++p)﹔表示的是这个数组中第一个元素的地址(可以理解p为指向二维数组的指针,{ 1,2,3.4 } ,{ 5,6,7,8 },{9,10,11,12}。p指向的就是{1,2,3,4}的地址,p就是指向元素,{ 1,2,3,4 },**p指向的就是1),语句**(++p)会输出这个数组的第一个元素5。 

指针数组:

    指针数组可以说成是”指针的数组”,首先这个变量是一个数组,其次,”指针”修饰这个数组,意思是说这个数组的所有元素都是指针类型,在32位系统中,指针占四个字节。

指针数组:数组类型 *数组名[数组长度];首先我们定义一个指针数组,指针取名为p

int* p[4];

 int *p[4];因为优先级的关系,p先与[ ]结合,说明p是一个数组,然后再与*结合说明数组p的元素是指向整型数据的指针。元素分别是p[0],p[1]...p[3],相当于定义了4个整形指针变量。所以p就是数组元素是指针的数组,本质为数组。

指针数组表示的是一个数组,而数组中的元素是指针。下面给出另外一个指针数组的示例 :

#include<stdio.h>
void main()
{
	int i;
	int *p[4];
	int a[4]={1,2,3,4};
	p[0] = &a[0];
	p[1] = &a[1];
	p[2] = &a[2];
	p[3] = &a[3];
	for(i=0;i<4;i++)
		{
		printf("%d\n",*p[i]);
		}
	return 0;		
}

这个结果为1234.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值