通过代码加解析的方式带领大家分析 :数组与指针的关系

举报
念君思宁 发表于 2023/02/16 17:52:52 2023/02/16
【摘要】 通过代码加解析的方式带领大家分析 :数组与指针的关系

通过代码加解析的方式带领大家分析 :数组与指针的关系

指针——数组

对于指针,数组,大家到目前为止,大多已经有了详细的了解与认识,并且能够正确的连立起来指针与数组的应用!这一点是非常重要的也是没有办法来取吸取经验的,这就依靠我们多多寻找练习题来刷,毕竟一个好的工程师,没有大量的代码,怎能成就??

对于数组与指针的简单应用场景,笔者仍旧按照代码加解析的方法来涉及!

下面请看笔者的简单代码:通过指针来打印数组元素!(1)

//通过指针来打印数组元素
 
#include <stdio.h>
int main()
{
	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
 
	int* p = arr;
 
	int i = 0;
	int sz = sizeof(arr) / sizeof(arr[0]);
 
	for (i = 0; i < sz; i++)
	{
		printf("%d ", *p);
		p++;
	}
	return 0;
}

在上述代码中,定义了一个int类型的指针p,而且p指向数组arr ,而且数组名arr指的是数组首元素的地址! 假设,我们不知道该数组元素的大小,当然对于简短的数组我们可以去手动来查,但是对于几百几千的数组元素我们也是用手动来查数字蛮??这样的做法累不死人来还!这边还没有查出来整个数组元素的大小,而且竞争者已经将整个代码书写好,并且运行出来得出结果了,这样的对手跟猪一样的队友!优恶自见!因此,我们需要知道,并且正确运用sizeof的去求数组的大小;但是对于字符串,就用库函数strlen()来进行求字符串长度(专用)!

for (i = 0; i < sz; i++)
	{
		printf("%d ", *p);
		p++;
	}

下面进行对数组元素的打印!通过对   : i = 0; i < sz; i++   每次循环的应用,循环sz次,每一次都执行:printf("%d ", *p);       p++;    在这里用了“*”(解引用操作符)目的是通过数组首元素的地址arr逐步找到整个数组,并且打印出来!p++  :是指,每次都往后走一步,去找到下一个数表的元素!

最后的打印结果为:

上述内容仅仅 是通过指针来打印数组的一种简单方法,下面请看笔者的第二种通过指针打印数组的方法!

下面请看笔者的简单代码:通过指针来打印数组元素!(2)

 
//通过指针来打印数组元素
 
#include <stdio.h>
int main()
{
	int arr[] = { 10,9,8,7,6,5,4,3,2,1,0 };
 
	int* p = arr;
 
	int i = 0;
	int sz = sizeof(arr) / sizeof(arr[0]);
 
	for (i = 0; i < sz; i++)
	{
		printf("%d ", *(p + i));
		
	}
	return 0;
}

在上述带段代码中,笔者仅仅是更改了部分代码,并且更改了数组元素,害拍再用上次代码运行后的结果,紧急避嫌!

在这段代码里面,其实主要更改的内容还是for循环里面的代码!

for (i = 0; i < sz; i++)
	{
		printf("%d ", *(p + i));
		
	}

每一次的循环都从数组arr(数组的首元素)开始,往后走i步,然后在通过对(p+i)  位置的数组元素来进行“*”解引用,因此可以打印出来该整个数组元素!

最后的打印结果为:

 通过上述代码,笔者简单的总结下了下面几个数组与指针的关系!

数组与指针的不同:

1.数组与指针不是一个东西!

2.数组能够存放一组数(一段连续的空间),数组的大小取决于元素个数!

3.指针是一个变量,是用来存放地址的(4或8个字节)

数组与指针的联系:

1.数组名是地址(指针)!

2.数组把首元素的地址,交给一个指针变量后,可以通过指针来访问数组!

本文到此就已经将笔者想要表达的内容,已经大致覆盖,对于该文,笔者若有不同的意见,请及时联系笔者进行更改!

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。