数组和指针的联系(C语言)

        数组和指针是两种不同的数据类型,数组是一种构造类型,用于存储一组相同类型的变量;而指针是一种特殊类型,专门用来存放数据的地址。数组名除了sizeof(数组名)&数组名表示整个数组外,其他情况下都表示的是首元素的地址,详情见: 

        C语言学习笔记之数组篇-CSDN博客

        因此数组也可以向指针一样通过 +整数并解引用的操作访问数组的元素,如:

#include <stdio.h>

int main()
{
	int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
	int i = 0;
	int sz = sizeof(arr) / sizeof(arr[0]);

	for (i = 0; i < sz; i++)
	{
		printf("%d ", *(arr + i)); //*(arr + i)等价于arr[i]
	}
	printf("\n");
	return 0;
}

        同理,指针也可以像数组一样通过下标访问 代替 +/-整数并解引用的操作,如:

#include <stdio.h>

int main()
{
	int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
	int* parr = arr;
	int i = 0;
	int sz = sizeof(arr) / sizeof(arr[0]);

	for (i = 0; i < sz; i++)
	{
		printf("%d ", parr[i]); //parr[i] 等价于 *(parr + i)
	}
	printf("\n");
	return 0;
}

#include <stdio.h>

int main()
{
	int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
	int i = 0;
	int sz = sizeof(arr) / sizeof(arr[0]);
	int* parr = &arr[sz - 1];

	for (i = 0; i < sz; i++)
	{
		printf("%d ", parr[-i]); //parr[-i] 等价于 *(parr - i)
	}
	printf("\n");
	return 0;
}

        由此,我们可以得出一个结论,地址[i] == *(地址 + i),即它们的底层实现可能是一样的。数组和指针的联系仅此而已。

相关推荐

  1. C语言指针关系

    2024-04-24 07:54:04       29 阅读
  2. C语言指针sizeofstrlen详解

    2024-04-24 07:54:04       64 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-24 07:54:04       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-24 07:54:04       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-24 07:54:04       87 阅读
  4. Python语言-面向对象

    2024-04-24 07:54:04       96 阅读

热门阅读

  1. Qt : 实现串口的同步和异步读写消息

    2024-04-24 07:54:04       42 阅读
  2. npm详解

    2024-04-24 07:54:04       37 阅读
  3. R语言 数据的整理与清洗(第二篇)

    2024-04-24 07:54:04       33 阅读
  4. OceanBase OLAP collation utf8mb4_bin 优先

    2024-04-24 07:54:04       33 阅读
  5. 【Mysql】Mysql8日常优化经验分享

    2024-04-24 07:54:04       30 阅读