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

指针(二)

字符指针

字符指针是一种存储字符串(即字符数组)的内存地址的指针,可以通过字符指针访问和操作存储在内存中的数据。

下面来分析这个代码:一个字符数组str,ptr就是我所要讲的字符指针。字符指针同数组一样,得到了首元素的地址这个字符串(字符数组)其他的元素不需要再找。

上面这个代码再简写一下变成下面这个代码 :直接将字符指针指向字符串进行字符串打印。对比这两张,发现借助数组能够改变其中元素的值;但是当使用字符串字面量初始化字符指针时,不要尝试修改该字符串的内容,因为这样做可能会导致程序崩溃。

数组指针 

顾名思义指向数组的指针,指向数组的指针意味着这个指针存储了数组首元素的地址,但它还包含了关于数组类型的信息(如数组的大小和类型【int (*) [10] ,指针变量这样放(*p)】)。数组指针常常和二维数组联系一起,数组指针int (*p)[10]等价于int [0][10](也就是(*p)等价于p[0])。 

就举下面这个例子:arr是一个一维数组,也可以看作一个二维数组(一行十列),指针数组p地类型和大小是int (*)[10],因为(*p)等价于p[0],所以这就是数组指针的来源。

 指针数组

指针数组是一种特殊的数组,它的每个元素都是一个指针,这些指针可以指向同类型的变量、数组或其他数据类型。指针数组在处理字符串、数组集合或动态数据结构时非常有用。

arr是一个指针数组,它有3个元素包含的是三个变量的地址,每个元素都是一个指向int的指针,所以需要对指针解引用才能打印指向的值。 

对比一下字符串:不管是通过三个字符数组合成一个指针数组还是下面这个,字符指针数组都不需要进行解引用,因为字符串在C语言中是通过字符数组(通常以\0结尾)表示的,但通常通过指向数组首元素的指针来访问。

数组传参和指针传参 

 一维数组传参

二维数组传参

一维指针传参

 

二维指针传参

函数指针 

函数指针:存储函数的地址,可以通过这个地址来调用函数。函数指针的声明需要指定函数返回值的类型、函数名(这里用指针名代替)以及函数的参数列表(包括参数的类型和数量)。但是,在声明函数指针时,我们不会给出函数名,而是使用指针名来代替。

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【Python机器学习】NLP概述——超空间简述
  • 如何在项目管理中完成项目立项?
  • 图论:描述有限离散集合中元素间关系
  • 春游c++
  • 聚合智链已获道富环球投资,正式上线AI合约策略资金托管平台
  • 参考博客汇总
  • Android.bp和Android.mk文件有的区别
  • 深入理解 GC 原理、调度与调优
  • IO进程文件操作
  • scrapy--图片管道-ImagesPipeline
  • Flutter Web 正式官宣弃用 HTML renderer , Canvas 路线成为唯一
  • [mysql][sql]安装完mysql8跨主机不能访问解决办法
  • Science Robotics 与蜜蜂群互动的蜂窝型机器人系统
  • web测试之功能测试常用的方法有哪几种?有什么要点要注意?
  • Leetcode 3266. Final Array State After K Multiplication Operations II
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • Angular2开发踩坑系列-生产环境编译
  • express如何解决request entity too large问题
  • javascript数组去重/查找/插入/删除
  • k8s如何管理Pod
  • learning koa2.x
  • MYSQL 的 IF 函数
  • RxJS 实现摩斯密码(Morse) 【内附脑图】
  • session共享问题解决方案
  • swift基础之_对象 实例方法 对象方法。
  • ucore操作系统实验笔记 - 重新理解中断
  • ViewService——一种保证客户端与服务端同步的方法
  • Webpack 4x 之路 ( 四 )
  • 阿里云应用高可用服务公测发布
  • 安卓应用性能调试和优化经验分享
  • 使用SAX解析XML
  • 探索 JS 中的模块化
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  •  一套莫尔斯电报听写、翻译系统
  • 再谈express与koa的对比
  • 最简单的无缝轮播
  • ​一些不规范的GTID使用场景
  • ‌分布式计算技术与复杂算法优化:‌现代数据处理的基石
  • #window11设置系统变量#
  • #快捷键# 大学四年我常用的软件快捷键大全,教你成为电脑高手!!
  • #预处理和函数的对比以及条件编译
  • $.extend({},旧的,新的);合并对象,后面的覆盖前面的
  • ()、[]、{}、(())、[[]]命令替换
  • (2022 CVPR) Unbiased Teacher v2
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (Repost) Getting Genode with TrustZone on the i.MX
  • (二)构建dubbo分布式平台-平台功能导图
  • (附源码)spring boot公选课在线选课系统 毕业设计 142011
  • (附源码)计算机毕业设计大学生兼职系统
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (剑指Offer)面试题34:丑数
  • (十二)springboot实战——SSE服务推送事件案例实现
  • (转)德国人的记事本
  • (转载)虚幻引擎3--【UnrealScript教程】章节一:20.location和rotation
  • ***检测工具之RKHunter AIDE