【C语言】指针的深度理解(一)
2023-04-18 14:09:14 时间
前言
我们已经了解了指针的概念,一是指针变量是用来存放地址的,每个地址都对应着唯一的内存空间。二是指针的大小是固定的4或8个字节(取决于操作系统,32位的占4个字节,64位的占8个字节)。三是指针是有类型的,不同的类型决定了指针的访问权限,同时决定了指针加减整数的步长。
字符指针
形式
我们将形如 char* 的指针称为字符指针 。
访问权限及步长
字符指针的类型决定了字符指针只能访问一个一节,加减整数时移动的距离也是一个字节。
对常量字符串的进一步认识
我们将形如 “abcde” 称为字符串常量,当我们让字符指针指向该字符串时。
char* str = "abcde";
字符指针变量str实际上存储的是a的地址,也就是常量字符串首字符的地址,而不是整个字符串的地址。
指针数组
指针数组的概念
我们知道,数组是某一相同类型元素的集合,我们之前学过的有整型数组、字符数组、浮点型数组。这一次我们来学习指针数组。
顾名思义,指针数组雷存放的是指针类型地元素,是一个数组。
指针数组的定义
定义
我们以整形指针数组为例。
int* arr[SIZE]
指针数组数组的类型为:
int* [SIZE]
数组指针
数组指针的概念
我们之前学过整形指针、字符指针、浮点型指针,他们都是存放对应类型变量的地址的变量,由此可知,数组指针便是指向数组的指针
数组指针的定义
错误的定义方法:
int* arr[10]
这定义成了指针数组,因为【】的优先级要大于*,arr会与【】先结合成为数组。
正确的定义方法:
int(*arr)[SIZE]
我们需要让 arr 先同 * 结合,表示 arr 是个指针,在加上指向的类型 int 【SIZE】 。
总结
这一篇博客介绍了字符指针、数组指针、指针数组的概念及定义、字符指针存放常量字符串是通过存放常量字符串首字符的地址来实现的。
相关文章
- 【技术种草】cdn+轻量服务器+hugo=让博客“云原生”一下
- CLB运维&运营最佳实践 ---访问日志大洞察
- vnc方式登陆服务器
- 轻松学排序算法:眼睛直观感受几种常用排序算法
- 十二个经典的大数据项目
- 为什么使用 CDN 内容分发网络?
- 大数据——大数据默认端口号列表
- Weld 1.1.5.Final,JSR-299 的框架
- JavaFX 2012:彻底开源
- 提升as3程序性能的十大要点
- 通过凸面几何学进行独立于边际的在线多类学习
- 利用行动影响的规律性和部分已知的模型进行离线强化学习
- ModelLight:基于模型的交通信号控制的元强化学习
- 浅谈Visual Source Safe项目分支
- 基于先验知识的递归卡尔曼滤波的代理人联合状态和输入估计
- 结合网络结构和非线性恢复来提高声誉评估的性能
- 最佳实践丨云开发CloudBase多环境管理实践
- TimeVAE:用于生成多变量时间序列的变异自动编码器
- 具有线性阈值激活的神经网络:结构和算法
- 内网渗透之横向移动 -- 从域外向域内进行密码喷洒攻击