9.指针与数组的关系

9.指针与数组的关系

1. 数组与指针的基本关系:变量存放在内存中,有地址编号,我们定义的数组,其实就是多个相同类型的变量的集合,每个变量都占内存空间,都有地址编号。
所以指针当然也可以存放数组元素的地址。

2. 数组元素的引用方法
方法1: 数组名[ 下标 ]

int     a[ 10 ];
a [2]  =  100;

方法2: 指针名加下标

	int  a [10];
	int   *p;
	 p = a;
	 p[ 2 ] =23;   //因为p和a等价,p[9] = 23;等价于 a[9]  =  23;

补充说明:C语言规定,数组的名字就是数组的首地址,即第0个元素 a[0] 的 地址,是个常量。
注意: p 和 a ,不同p是指针变量,a是个常量,所以可以用等号给p赋值,但是不可以给 a 赋值。

	int* p;
	int  a[10] = {1,2,3,4,5,6,7};
	p = a;                   //p与a等价p[9] = 23;等价于 a[9]  =  23;
	for (int i = 0; i < 10; i++)
	{

		printf("i=%d,*p  =  %d,p = %p\n", i,*p, p);
		p++;
	}

在这里插入图片描述

方法3 :通过指针运算加取值的方法来引用数组的元素。

int   a[ 10 ];
int   *p;
p = a;
*(p + 2)= 100;  // 相当于 a[2] = 100;
//解释: p 是第0个元素的地址, p  + 2是a  [ 2 ] =这个元素的地址、对第二个元素的地址取值,即 a [2].

**注意: *(a + n) < = = > *(p + n) < = = > a[n] < == > p[n]**四者等价

	nt* p;
	int  a[10] = {1,2,3,4,5,6,7};
	p = a;               //p与a等价p[9] = 23;等价于 a[9]  =  23;	
	printf("*(p + 2) = %d\n", *(p + 2));
	printf("*(a + 2) = %d\n", *(a + 2));
	printf("(p + 2) = %p\n", (p + 2));  //p+2  等价于  a[2]
	printf("(a + 2) = %p\n", &a[2]);

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值