C语言练习(5)——数组和指针访问形式

本文探讨了数组和指针在访问方式上的相似性导致的混淆,并通过实例展示了如何通过四种不同的方式获取数组的第五个元素。强调了数组和指针在概念上的差异,如a是数组首元素的地址,&a是数组的地址,以及正确和错误的访问方式。
摘要由CSDN通过智能技术生成

有时候我们经常会把指针和数组混淆,其实数组就是数组,指针就是指针,他们之间没什么关系。
那么我们为什么会混淆呢?
我混淆的原因是:

  • 1、数组和指针都是传址方式进行访问
  • 2、数组可以用指针或者下标方式对数组进行访问
  • 3、指针可以用指针方式或下标方式对指针进行访问

总的来说就是:数组和指针都是用传址方式进行访问,而且访问方式在表达形式上相同。

直接上题目:
题目:给出数组a[7],要求用不同方法取出数组的第五个元素。

#include   <stdio.h>
int main()
{
	int a[7]={0,1,2,3,4,5,6};
	int *p = a;
	/*******正确表达方式**********/
	printf("a[4]=%d\n",a[4]);//数组的下标表现形式
	printf("p[4]=%d\n",p[4]);//指针的下标表达方式
	printf("*(a+4)=%d\n",*(a+4)); //数组的指针表达方式
	printf("*(p+4)=%d\n",*(p+4)); //指针的指针表达方式
	/********分界线,错误表达方式***********/
	printf(" ****************** \n");
	printf("(*a+4)=%d\n",(*a+4)); //结果虽然输出是4,但是它的意思是a[0]+4
	printf("(&a+4)=%d\n",(&a+4));//这条语句的意思是&a+7sizeof(int),已经超出数组范围
	//printf("*p[4]=%d\n",*p[4]);    //直接语法错误
	getch();//窗口保留函数,调试使用
	return 0;
}


输出结果:在这里插入图片描述

所以一共有四种方式(可能还有其他方式笔者还没有找到)来获取数组的元素。

注意:

1、 a是数组首元素的首地址,也就是 a[0]的首地址
2、&a 是数组的首地址
a和&a的值是一样,但是意思不一样
3、a+1 是数组下一元素的首地址,即 a[1]的首地址
4、&a+1 是本数组后的下一个地址,即&a+7sizeof(int)已经越过了本数组

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值