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

【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】 。

总结

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


http://www.kler.cn/a/170.html

相关文章:

  • 你好,2025!JumpServer开启新十年
  • Android车载音频系统目录
  • 晨辉面试抽签和评分管理系统之一:考生信息管理和编排
  • python对redis的增删查改
  • 【微服务】SpringBoot 国际化适配方案使用详解
  • 更换WordPress主题的基础知识及注意事项
  • 详谈parameterType与resultType的用法
  • HDFS黑名单退役服务器
  • 2023年再不会Redis,就要被淘汰了
  • 【算法】六大排序 插入排序 希尔排序 选择排序 堆排序 冒泡排序 快速排序
  • 【AcWing】蓝桥杯备赛-深度优先搜索-dfs(2)
  • 【Java版oj】day08两种排序方法、最小公倍数
  • 11.落地:微服务架构灰度发布方案
  • Android 架构之长连接技术
  • 写给20、21级学生的话
  • chatgpt这么火?前端如何实现类似chatgpt的对话页面
  • CANoe-Start Values窗口是做什么的
  • JavaScript的事件传播机制
  • 【Docker】Docker安装Jenkins一键自动化部署SpringBoot项目使用详解
  • 总结:电容在电路35个基本常识
  • 【Python】控制自己的手机拍照,并自动发送到邮箱
  • YOLOv7、YOLOv5改进之打印热力图可视化:适用于自定义模型,丰富实验数据
  • ChatGPT研究分享:机器第一次开始理解人类世界
  • 博客系统(界面设计)
  • Windows server——部署DNS服务(3)
  • 2022年全国职业院校技能大赛(中职组)网络安全竞赛试题A模块第三套解析教程(详细)