【C语言】数组指针的使用 

举报
謓泽 发表于 2023/09/30 15:52:37 2023/09/30
【摘要】 【C语言】数组指针的使用 

💥 数组指针的使用 

💥注意: 使用数组指针的时候一般都不会在一维数组当中去使用!通常都是在二维数组中使用

大家可以思考下这是为什么,你可以试着去看看数组指针的形式在去思考🤔

那就假设我们先在一维数组当中去使用下,如下代码所示 👇

#include <stdio.h>
int main(void)
{
	int arr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
	int(*pa)[10] = &arr;
	int i = 0;
	for (i = 0; i < 10; i++)
	{
		printf("%d ", *((*pa) + i));
	}
    return 0;
}

上述代码👆,就是配合数组指针去使用的,可能小伙伴们看了会觉得很不自在我也觉得是,明明就可以用指针变量解决的一道题目,却还要用数组指针去解决。 

指针变量解决,如下代码所示 👇

#include <stdio.h>
int main(void)
{
	int arr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
	int* pa = arr;
	int i = 0;
	for (i = 0; i < 10; i++)
	{
		printf("%d ",*pa+i);
	}
	return 0;
}

这样岂不是更方便吗?😜

接下来,我们来正确的使用数组指针。 如下代码所示 👇

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#define row 3
#define col 3
void print(int(*p)[col], int r, int c) //p是数组指针
{
	int i, j;
	for (i = 0; i < row; i++)
	{
		for (j = 0; j < col; j++)
		{
			printf("\t%d ", *(p[i] + j));
		}
		printf("\n");
	}
}
int main(void)
{
	int arr[3][3] = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
	print(arr, row, col);
	return 0;
}

编译运行结果 👇 

💥注意:二维数组的数组名表示首元素的地址,第一行是二维数组首元素地址!因为是一维数组的地址,所以在形参当中使用了指向一维数组指针来去进行使用。而这样的一维数组+i的话相当于找到了第i行当中的地址,解引用相当于拿到了第 i 行的数组名。这又相当于这①行首元素的地址,然后再+上 j 的话就相当于 j 的地址。最后,再括起来解引用,就找到了第 i行下标为 j 的地址进行引用 🥳

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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