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

44.5.【C语言】辨析“数组指针”和“指针数组”

目录

1.数组指针

2.指针数组

执行结果

底层分析


1.数组指针

从语文的角度理解,"数组"修饰"指针".因此数组指针是指针

例如以下代码

#include <stdio.h>
int main() 
{char a[5] = { "ABCDE" };return 0;}

其中a就是数组指针,因为数组名代表数组首元素的地址,该数组名指向数组的首元素A

2.指针数组

从语文的角度理解,"指针"修饰"数组".因此指针数组是数组

由指针数组的定义,如果存储一级指针,则就要定义类型为二级指针的数组来存储

例如以下代码

#include <stdio.h>
int main() 
{char* a[5] = { "ABC","DEF","GHI","JKL","MNO" };return 0;}

下断点至return 0;,打开内存窗口,输入&a

发现存储的元素的值是地址0x00e47bcc,0x00e47bd0,0x00e47bd4,0x00e47bd8,0x00e47bdc

相邻两个值都差4

地址栏输入0x00e47bcc,跳转到的是存储字符串的内存空间

打印指针数组指向的字符串

#include <stdio.h>
int main()
{char* a[5] = { "ABC","DEF","GHI","JKL","MNO" };for (int i=0;i<5;i++)printf("%s ", a[i]);return 0;
}

注意:打印char*类型的数据,直接就是%s,后面跟char*类型的首元素地址

执行结果

底层分析

调试模式下,转到反汇编

只看重点部分

	char* a[5] = { "ABC","DEF","GHI","JKL","MNO" };
00E44A76  mov         dword ptr [a],offset string "ABC" (0E47BCCh)  
00E44A7D  mov         dword ptr [ebp-14h],offset string "DEF" (0E47BD0h)  
00E44A84  mov         dword ptr [ebp-10h],offset string "GHI" (0E47BD4h)  
00E44A8B  mov         dword ptr [ebp-0Ch],offset string "JKL" (0E47BD8h)  
00E44A92  mov         dword ptr [ebp-8],offset string "MNO" (0E47BDCh)  

注意到"offset string",是将字符串的地址存储到数组中,因此顾名思义,为指针数组

http://www.lryc.cn/news/498187.html

相关文章:

  • node.js基础学习-express框架-路由及中间件(十)
  • 使用MSYS搭建linux开发环境踩坑笔记
  • vue3+ts+vite+ElementPlus上传进度条实时更新(UPLoad和progress)。
  • AspNet WebAPI 模型绑定问题
  • Android 图形系统之七:SurfaceFlinger
  • 14、鸿蒙学习——管理通知角标
  • TongRDS分布式内存数据缓存中间件
  • [在线实验]-RabbitMQ镜像的下载与部署
  • Linux 系统文件描述符(File Descriptor)小白级介绍
  • 【Verilog】实验二 数据选择器的设计与vivado集成开发环境
  • IDL学习笔记(三)OMI数据处理。hdf5文件读取,图像反转,GeoTiff区别,月季年均值计算提取输出,单位转换,运行时间计算
  • 深入浅出:PHP中的数据类型全解析
  • 要使用 OpenResty 创建一个接口,返回客户端的 IP 地址,并以 JSON 格式输出
  • 智慧油客:从初识、再识OceanBase,到全栈上线
  • ClickHouse守护进程
  • 智能合约
  • SQL面试题——拼多多SQL面试题 求连续段的起始位置和结束位置
  • 玩《三角洲行动》遇到游戏运行故障是什么原因?游戏运行故障要怎么解决?预防游戏运行故障问题出现
  • 基于灰色神经网络的订单需求预测
  • 记录学习《手动学习深度学习》这本书的笔记(三)
  • JS中递归函数的理解及展开运算符在递归种的运用理解
  • 人工智能学习用的电脑安装cuda、torch、conda等软件,版本的选择以及多版本切换
  • 提高身份证 OCR 识别 API 接口的准确性的方法
  • PHP面向对象
  • Tomcat新手成长之路:安装部署优化全解析(下)
  • GPT 1到4代的演进笔记
  • vitepress组件库文档项目 markdown语法大全(修正版)
  • Vue3技术开发,使用纯CSS3动手制作一个3D环绕的相册展示效果,支持传入任意图片.3D轮播相册的组件
  • LeetCode 力扣 热题 100道(十五)搜索插入位置(C++)
  • 【035】基于51单片机俄罗斯方块游戏机【Proteus仿真+Keil程序+报告+原理图】