前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >指针数组和数组指针的区别详细介绍【C语言】【指针】

指针数组和数组指针的区别详细介绍【C语言】【指针】

作者头像
see.
发布2024-06-04 12:48:55
1040
发布2024-06-04 12:48:55
举报
文章被收录于专栏:C++破军之路C++破军之路

指针数组和数组指针是C语言中常用的数据结构,它们可以在处理内存动态分配、多维数组、函数指针等方面提供便利。虽然指针数组和数组指针的名字十分相似,但是它们是两个截然不同的概念,下面进行详细介绍:

一、指针数组

指针数组: 指针数组是一个数组,其中的每个元素都是指针类型。这意味着每个元素都包

                   一个内存地址,指向内存中的某个位置。指针数组常用于以下情况:

  • 存储不同类型的数据:通过将指针数组的每个元素设置为不同类型的指针,可以存储不同类型的数据。
  • 传递数组到函数:可以通过将指针数组作为参数传递到函数中来访问数组。
  • 动态内存分配:指针数组可以用于动态分配内存。

 下面是一个指针数组的实例:

代码语言:javascript
复制
#include<stdio.h>
int main()
{
	int* ptrArray[5];  // 声明一个包含5个指向整数的指针的数组

	int a = 1, b = 2, c = 3, d = 4, e = 5;
	ptrArray[0] = &a;
	ptrArray[1] = &b;
	ptrArray[2] = &c;
	ptrArray[3] = &d;
	ptrArray[4] = &e;

	for (int i = 0; i < 5; i++) 
	{
		printf("%d ", *ptrArray[i]);
	}

}

上面的示例中,我们声明了一个包含 5 个指向整数的指针的数组,并将每个指针设置为不同的整数变量的地址。然后,我们可以使用指针数组中的元素访问相应的变量。 

二、数组指针

数组指针: 数组指针是一个指针,它指向一个数组。这意味着它包含一个内存地址,指向内存中的一个数组。数组指针常用于以下情况:

  • 访问多维数组:可以使用数组指针来访问多维数组中的元素。
  • 动态内存分配:数组指针可以用于动态分配内存。
  • 函数指针:可以使用数组指针来定义函数指针类型。

下面是一个数组指针的实例:

代码语言:javascript
复制
#include<stdio.h>
int main()
{
    int arr[2][3] = { {1, 2, 3}, {4, 5, 6} };  // 声明一个包含2行3列的二维数组
    int(*ptr)[3];  // 声明一个指向包含3个整数的数组的指针
    ptr = arr;
    for (int i = 0; i < 2; i++)
    {
        for (int j = 0; j < 3; j++)
        {
            printf("%d ", *(*(ptr + i) + j));
        }
        printf("\n");
    }

}

在上面的示例中,我们声明了一个包含 2 行 3 列的二维数组,并定义了一个指向包含 3 个整数的数组的指针。我们将数组 arr 的地址赋值给指针 ptr,然后使用指针来访问数组中的元素。

三、总结

需要注意的是,指针数组和数组指针都是指针类型,它们在声明时需要指定存储的元素类型或指向的数组类型,并且使用时需要进行解引用。此外,指针数组和数组指针的使用方式不同,需要根据具体情况进行选择。 

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-06-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档