面试笔记 | 数组与指针的区别
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]
的元素值。
面试笔记 | 数组与指针的区别相关推荐
- C语言学习笔记---数组和指针的区别
在平时使用数组和指针的时候,感觉他们的使用很类似.那么数字和指针在使用的过程中到底有什么区别呢? 下面通过一个例子来简单分析一下. char str1[] = "abcdef&quo ...
- C++数组与指针的区别
数组与指针的区别 前言 修改内容上的差别 运算符sizeof 可以计算出数组的容量(字节数) sizeof(p),p为指针得到的是一个指针变量的字节数,而不是p所指的内存容量 计算数组和指针的内存容量 ...
- 一道题目让你看出C语言的数组与指针的区别:
文章目录 题目概述: 输入格式: 输出格式: 输入输出样例: C语言题解: 错误的运行结果: 错误问题的分析与定位: C库的malloc函数讲解: 函数原型: 函数形参: 函数的返回值: 内存的释放: ...
- 数组与指针的区别与联系
1 引言 数组并非指针,在初学C语言时,我们会觉得"数组和指针是相同的",实际上,这是一种非常危险的说法,并不完全正确.下面完整地解释一下数组什么时候等同于指针,什么时候又不等同于 ...
- 数组和指针的区别与联系(详细)
一.概念 数组:数组是用于储存多个相同类型数据的集合. 指针:指针相当于一个变量,但是它和不同变量不一样,它存放的是其它变量在内存中的地址. 二.赋值.存储方式.求sizeof.初始化等 1.赋值 同 ...
- 深入理解数组与指针——原因在于”退化“
(一) 数组与指针本质是不同的.如下图所示 char a[]="hello"; char *p="hello"; 上述代码的初始化结果如下图所示: a就是一个数 ...
- 十一:数组和指针的关系?
1. 数组和指针的区别: 概念: 数组:数组是用于存储多个相同类型数据的集合,数组名是首元素的地址. 指针:指针相当于一个变量,但是它和普通变量不一样,它存放的是其他变量在内存中的地址,指针名指向了内 ...
- 牛客刷题笔记--(数组专项练习1-77)
知识点 设一维数组中有n个数组元素,则读取第i个数组元素的平均时间复杂度为(O(1)) 稀疏矩阵一般采用三元组顺序表方法压缩存储 数组作为函数参数传递的是数组的首地址 在二分查找中,如果剩下的子序列有 ...
- 指针笔记(指针数组和指向数组的指针,数组中a和a的区别等)
指针数组和指向数组的指针 int *p[4]和int (*p)[4]有何区别? 前者是一个指针数组,数组大小为4,每一个元素都是一个指向int的指针 后者是指向int[4]类型数组的指针 以上代码若运 ...
最新文章
- Linux驱动无硬件设备,Linux设备驱动与硬件通信
- UA MATH571A 一元线性回归I 模型设定与估计
- c 语言程序设计阚道宏,C语言用宏实现静态多态
- 关于串口接收数据不全的问题
- Horizon View 6-虚拟桌面模板制作⑶
- 微服务之 EShop on dapr概览
- 2018大数据学习路线从入门到精通
- 数字音视频知识点汇总(二)
- 让你变成优秀程序员的几个小习惯
- 千万别被“读书无用”给害了
- django-admin.py startproject HelloWorld创建文件提示invalid syntax
- java 日期相减得分钟_java日期相减得到分钟??????
- c语言对分求解方程,用C语言对一元二次方程求解
- 读《鸟哥的linux私房菜》有感--第四天
- proteus入门教程
- spring自定义yml文件解析器
- 有效沟通bic法则_有效沟通bic法则_合格职场人都会的3个有效的沟通法则
- SPOJ ACPC13——Increasing Shortest Path
- 绩效评估、绩效审计与绩效优化
- TMS320C6678开发笔记---IBL编译与分析3