1. 简述数组与指针的区别

  • 数组是直接访问数据的。
  • 指针是间接访问数据的。

定义:

  • 数组是类型相同、数目固定的若干个变量的有限集合,它存放的是数据。
  • 指针是变量的地址,存放的是变量的地址。

存储方式:

  • 数组通常存储在静态存储区或栈上。
  • 指针可以随时随地地指向任意类型的内存块。

内存容量:

  • 用运算符sizeof可以计算出数组的容量(字节数)。
  • sizeof(p)p为指针得到的是一个指针变量的字节数,而不是p多指的内存容量。
数组长度 = sizeof(数组名)/sizeof(数组名[0])

内容上的差别:

  • char a[] = "hello"数组指向每个数组元素。
  • char *p = "world"p指向字符串首地址指针。

2. 指针

  • 在32位操作系统下,指针是占4个字节空间大小,不管是什么数据类型。
  • 在64位操作系统下,指针是占8个字节空间大小,不管是什么数据类型。

多重指针

  • 由于指针变量存储的是指针所指向的内存地址,而指针变量自己所占有的内存空间也拥有一个地址,因此可以声明“指针的指针”,就是“指向指针变量的指针变量”,或者称为“多重指针”的应用。
    int num = 10;  // 定义整数变量num,初值赋为10int *ptr1 = #  // 定义指针变量 *ptr1,并指向整数变量num的地址int **ptr2 = &ptr1;  // 定义指针变量ptr2,并指向指针变量ptr1 的地址

3. 数组

多维数组

例如,二维数组,其在内存中也是以线性方式分配数组的可用空间,当然二维数组的名称同样也可以代表第一个数组元素的内存地址。

int arr[3][5];
  • *(arr+0)表示数组中第一维维数0的第一个元素的内存地址,也就是arr[0][0],其他数组元素的内存地址依次类推。
  • *(arr+1)表示数组中第一维维数1的第一个元素的内存地址,也就是arr[1][0];
  • 如果想获取元素arr[1][1]的内存地址,应该是使用*(arr+1)+1
  • *运算符的优先级高于+运算符。
  • 如果再加上一个*取值运算符,也就是*(*(arr+i)+j),就可以使用双重指针表示法来获取二维数组arr[i][j]的元素值。

面试笔记 | 数组与指针的区别相关推荐

  1. C语言学习笔记---数组和指针的区别

      在平时使用数组和指针的时候,感觉他们的使用很类似.那么数字和指针在使用的过程中到底有什么区别呢?   下面通过一个例子来简单分析一下. char str1[] = "abcdef&quo ...

  2. C++数组与指针的区别

    数组与指针的区别 前言 修改内容上的差别 运算符sizeof 可以计算出数组的容量(字节数) sizeof(p),p为指针得到的是一个指针变量的字节数,而不是p所指的内存容量 计算数组和指针的内存容量 ...

  3. 一道题目让你看出C语言的数组与指针的区别:

    文章目录 题目概述: 输入格式: 输出格式: 输入输出样例: C语言题解: 错误的运行结果: 错误问题的分析与定位: C库的malloc函数讲解: 函数原型: 函数形参: 函数的返回值: 内存的释放: ...

  4. 数组与指针的区别与联系

    1 引言 数组并非指针,在初学C语言时,我们会觉得"数组和指针是相同的",实际上,这是一种非常危险的说法,并不完全正确.下面完整地解释一下数组什么时候等同于指针,什么时候又不等同于 ...

  5. 数组和指针的区别与联系(详细)

    一.概念 数组:数组是用于储存多个相同类型数据的集合. 指针:指针相当于一个变量,但是它和不同变量不一样,它存放的是其它变量在内存中的地址. 二.赋值.存储方式.求sizeof.初始化等 1.赋值 同 ...

  6. 深入理解数组与指针——原因在于”退化“

    (一) 数组与指针本质是不同的.如下图所示 char a[]="hello"; char *p="hello"; 上述代码的初始化结果如下图所示: a就是一个数 ...

  7. 十一:数组和指针的关系?

    1. 数组和指针的区别: 概念: 数组:数组是用于存储多个相同类型数据的集合,数组名是首元素的地址. 指针:指针相当于一个变量,但是它和普通变量不一样,它存放的是其他变量在内存中的地址,指针名指向了内 ...

  8. 牛客刷题笔记--(数组专项练习1-77)

    知识点 设一维数组中有n个数组元素,则读取第i个数组元素的平均时间复杂度为(O(1)) 稀疏矩阵一般采用三元组顺序表方法压缩存储 数组作为函数参数传递的是数组的首地址 在二分查找中,如果剩下的子序列有 ...

  9. 指针笔记(指针数组和指向数组的指针,数组中a和a的区别等)

    指针数组和指向数组的指针 int *p[4]和int (*p)[4]有何区别? 前者是一个指针数组,数组大小为4,每一个元素都是一个指向int的指针 后者是指向int[4]类型数组的指针 以上代码若运 ...

最新文章

  1. Linux驱动无硬件设备,Linux设备驱动与硬件通信
  2. UA MATH571A 一元线性回归I 模型设定与估计
  3. c 语言程序设计阚道宏,C语言用宏实现静态多态
  4. 关于串口接收数据不全的问题
  5. Horizon View 6-虚拟桌面模板制作⑶
  6. 微服务之 EShop on dapr概览
  7. 2018大数据学习路线从入门到精通
  8. 数字音视频知识点汇总(二)
  9. 让你变成优秀程序员的几个小习惯
  10. 千万别被“读书无用”给害了
  11. django-admin.py startproject HelloWorld创建文件提示invalid syntax
  12. java 日期相减得分钟_java日期相减得到分钟??????
  13. c语言对分求解方程,用C语言对一元二次方程求解
  14. 读《鸟哥的linux私房菜》有感--第四天
  15. proteus入门教程
  16. spring自定义yml文件解析器
  17. 有效沟通bic法则_有效沟通bic法则_合格职场人都会的3个有效的沟通法则
  18. SPOJ ACPC13——Increasing Shortest Path
  19. 绩效评估、绩效审计与绩效优化
  20. TMS320C6678开发笔记---IBL编译与分析3

热门文章

  1. heckman两阶段的stata命令
  2. 我的100个生活基本
  3. 按键精灵 excel mysql_用按键精灵实现EXCEL表与数据库之间数据粘贴
  4. 离婚率高,比之过去是进步还是退步?
  5. 电脑关机后打开未关闭的页面还在_Win 10 电脑关机后,CPU风扇仍在转的解决办法...
  6. python用turtle画小猪佩奇
  7. 一款专业的日志分析软件——EventLog Analyzer
  8. 提示没有Windows管理员权限? 2招就能找回来!
  9. 微信公众号域名无限回调授权系统-对接易支付接口
  10. 数学建模:现代优化算法之遗传算法