首页 > 其他分享 >总结指针数组与数组指针的区别

总结指针数组与数组指针的区别

时间:2024-08-19 09:53:44浏览次数:9  
标签:总结 arr 指向 int 数组 ptr 指针

1、指针数组

1-1、定义

指针数组是一个数组,其元素是指针。这意味着数组的每个位置都存储了一个指针,这些指针可以指向任何类型的数据(包括其他数组、结构体等)。

1-2、类型

如果有一个指向整数的指针数组,其类型可能是 int* arr[N];,这里 arr 是一个数组,包含 N 个 int* 类型的元素。

1-3、用途

常用于存储字符串(字符指针数组)、动态数组(指针指向动态分配的内存块)、或者是指向结构体的指针数组等。

1-4、示例

int* ptrArray[5]; // 定义一个可以存储5个int*的数组  
for(int i = 0; i < 5; i++) 
{  
    ptrArray[i] = malloc(sizeof(int)); 
    *ptrArray[i] = i; // 赋值  
}

1-5、生活举例

你有一个书架,书架的每个格子里放的不是书,而是指向书的标签(指针)。通过这个书架,你可以找到很多书,但每次都需要查看对应的标签(指针)来找到具体的书。

2、数组指针

2-1、定义

数组指针是一个指针,它指向一个数组。这意味着这个指针存储了数组首元素的地址,但通过这个指针,我们可以访问整个数组。

2-2、类型

如果有一个指向包含5个整数的数组的指针,其类型可能是 int (*ptr)[5];,这里 ptr 是一个指针,指向一个包含5个整数的数组。

2-3、用途

主要用于函数参数传递,特别是当需要传递整个数组给函数时,使用数组指针可以避免复制整个数组,提高效率。

2-4、示例

int arr[5] = {1, 2, 3, 4, 5};  
int (*ptr)[5] = &arr; // ptr指向arr数组  
printf("%d\n", (*ptr)[2]); // 访问arr[2],输出3

2-5、生活举例

你有一个指向纸箱的箭头(数组指针),纸箱里装满了书(数组的元素)。通过这个箭头,你可以直接访问纸箱里的所有书(即整个数组),而不需要单独的标签来指示每本书的位置。

标签:总结,arr,指向,int,数组,ptr,指针
From: https://blog.csdn.net/m0_63764282/article/details/141251310

相关文章

  • C++ 各种初始化方法总结
    在各种编程语言中,初始化都是非常重要的步骤,用于确保对象在使用前具有确定的初始状态。C++提供了多种初始化方法,每种方法都有其特定的使用场景和注意事项。以下是一些主要的初始化方法及其注意事项:默认初始化(Default-initialization):形如Tobj、newT等方式的初始化,其中T为类......
  • java打印流,commons-io工具包,IO总结
    一.打印流1.概述:平时我们在控制台打印输出,是调用print()方法和println()方法完成的,这两个方法都来自于java.io.PrintStream类作用:该类能够方便地打印各种数据类型的值,写入数据后可以实现自动换行。通常用于日志记录2打印流的构造方法publicPrintStream(StringfileName)......
  • 动态规划 总结
    DAG上的动态规划与树形DP这两个词看上去很高大上,但实则就是记忆化搜索,而记忆化搜索其实就是DP的本质。当选择一个需要用全局变量来参与描述状态的方式时,就只能用常规搜索。但当状态可以完全被几个非全局参数确定性的描述时,就可以用记忆化搜索,记忆化搜索可以通过存储答案并直接提取......
  • Hadoop 第六周总结
    在Hadoop学习的第六周,你可能会收获以下关键知识点:YARN(YetAnotherResourceNegotiator):YARN是Hadoop的资源管理和作业调度系统。本周你可能深入了解了YARN的架构及其组件,包括ResourceManager和NodeManager。ResourceManager负责全局资源调度和作业调度,而NodeManag......
  • 2024.8.18 周总结(上周天到这周六集训,这周天放假)
    感觉这一周上难度了,尤其没听懂的是二分图和博弈论那天上午休息完之后的部分。有复习,有新知识,收获还是比较大的。晚上打游戏打多了。文化课没学多少。中午看番、玩寝室楼下桌上的游戏去了,因为寝室要关灯拉窗帘睡得也更早,一周就只写了一点点字帖,看了一点点《乡土中国》。综......
  • 虚树总结
    之前学了一些算法,没有写算法总结,未来会陆续补一些。前置知识:树形\(dp\),\(lca\),\(dfs\)序。我们考虑\([HEOI2014]\)大工程这道题。显而易见,假如这道题只有一次询问,我们可以直接树形\(dp\),快速求出答案,时间复杂度\(O(n)\)。但是,梦想是梦想,现实是现实,这题多组询问,假如一......
  • 第七周总结
    深入并发编程鉴于并发编程在现代软件开发中的重要性,本周我投入了大量时间深入学习了Java的并发编程模型。除了复习之前学过的线程基础、同步机制(如synchronized、volatile、wait/notify)外,我还重点学习了Java并发包(java.util.concurrent)中的高级并发工具,如ExecutorService、Futu......
  • 初识指针2の学习笔记
    目录1>>前言2>>野指针2.1>>野指针是如何形成的?2.2>>那么我们如何规避野指针呢?3>>assert断言4>>指针的传地址调用5>>数组名的理解6>>数组and指针的等价打印7>>结语1>>前言    今天我会继续分享一些我做的笔记,以及我对指针的理解,后续会持续分享指针几天,......
  • 【C语言篇】数组和函数的实践:扫雷游戏(附源码)
    文章目录前言扫雷游戏的分析和设计扫雷游戏的功能说明游戏的分析和设计文件结构设计扫雷游戏的代码实现初始化棋盘打印棋盘布置雷排查雷扫雷游戏的拓展前言源码在最后扫雷游戏的分析和设计经典扫雷游戏扫雷游戏的功能说明使⽤控制台实现经典的扫雷游戏游戏可......
  • js数组排序
    快速排序:每次循环使用数组中间位置的值按照大小,将数组分成左右两个部分,使用递归,分别对左右两个部分执行分割操作1//快速排序2functionquickSort(arr){3if(arr.length<=1){4returnarr;5}6constmidIndex=Math.floor(arr.length......