当前位置: 首页 > news >正文

【C语言】指针的深度理解(一)

前言 

我们已经了解了指针的概念,一是指针变量是用来存放地址的,每个地址都对应着唯一的内存空间。二是指针的大小是固定的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】 。

总结

这一篇博客介绍了字符指针、数组指针、指针数组的概念及定义、字符指针存放常量字符串是通过存放常量字符串首字符的地址来实现的。

相关文章:

  • python带你成功复刻热门手机游戏——飞翔的小鸟
  • Redis源码---整体架构
  • STM32之SPI
  • 课设-机器学习课设-实现新闻分类
  • 什么是刺猬理念
  • 软件测试用例篇(5)
  • 【CSS】快速入门笔记
  • 设计模式之不变模式
  • 【LeetCode】33. 搜索旋转排序数组、1290. 二进制链表转整数
  • HTTPS协议之SSL/TLS详解(下)
  • 2023金三银四常见Handler面试总结,附带答案
  • DML 添加、修改、删除数据
  • [ROC-RK3568-PC] [Firefly-Android] 10min带你了解I2C的使用
  • Shell编程:轻松掌握入门级Shell脚本,成为Shell高手
  • JavaScript 高级实例集合
  • 【Android -- 开源库】表格 SmartTable 的基本使用
  • 2023华为面试真题
  • 使用ControlNet 控制 Stable Diffusion
  • 【Hello Linux】命令行解释器
  • mysql无法启动服务及其他问题总结
  • 马上评丨老师要求犯错学生当众道歉,不该成被告
  • 欧盟数字法开出首张罚单:苹果和Meta合计被罚7亿欧元
  • 王毅同伊朗外长阿拉格齐会谈
  • 央行副行长陆磊:国际化程度有效提升是上海国际金融中心建设的一个主要方向
  • 王励勤谈国乒备战洛杉矶奥运会:要对六块金牌制定新的战略
  • 透纳仍是英国最好的艺术家,浦东美术馆有他的画展