指针引用字符串问题(详解)
通过指针引用字符串可以更加方便灵活的使用字符串。
字符串的引用方式有两种,下面简单介绍一下这两种方法。
1.用字符数组来存放一个字符串。
1.1
可以通过数组名和下标来引用字符串中的一个字符。
1.2
还可以通过数组名和格式声明符%s输出整个字符串。
具体实现代码如下:
#include <stdio.h>
int main()
{char ch[] = "xuejiejie";printf("%s\n", ch); //输出整个数组printf("%c\n", ch[1]); //输出第2个字符return 0;
}
结果:
xuejiejie
uD:\VS\Project4\x64\Debug\Project4.exe (进程 17608)已退出,代码为 0。
按任意键关闭此窗口. . .
2.用字符指针变量引用字符串常量。
先来举个例子:
#include <stdio.h>
int main()
{const char* string = "xuejiejie";printf("%s\n",string);return 0;
}
结果:
xuejiejieD:\VS\Project4\x64\Debug\Project4.exe (进程 17916)已退出,代码为 0。
按任意键关闭此窗口. . .
分析:
在c语言中对字符串常量是按照字符数组来处理,所以首先在内存中开辟一个连续字符数组来存放该字符串常量。
但是通过上面的代码我们可以发现字符串是没有数组名的,所以只能通过指针变量来引用。
其实在对指针进行赋值时,只是把字符串中的第一个字符的地址(首元素地址)赋值给指针变量。
对上面string而言就是把“x”的地址赋值给string。(注意不是把整个xuejiejie赋值给string)
错误示范:
const char* string = "xuejiejie";*string = "xuejiejie";
注意:当对一个数值型的数组时只用数组名是不能输出整个数组的,只能一个一个输出。
对于字符串的存取,可以采用下标法,指针法和指针变量法。
如下所示:
#include <stdio.h>
#include <string.h>
int main()
{char a[] = "xuejiejie";//下标法for (int i = 0; i < strlen(a); i++){printf("%c", a[i]);}printf("\n");//指针变量char* ch;ch = a;printf("%s\n", ch);for (; *ch != '\0'; ch++){printf("%c", *ch);}return 0;
}
结果:
xuejiejie
xuejiejie
xuejiejie
D:\VS\Project4\x64\Debug\Project4.exe (进程 8860)已退出,代码为 0。
按任意键关闭此窗口. . .
字符指针作为函数参数时
函数的形参和实参都可以分别用字符数组名或字符指针变量来表示。
具体情况如下表所示:
实参 | 形参 |
字符数组名 | 字符数组名 |
字符数组名 | 字符指针变量 |
字符指针变量 | 字符指针变量 |
字符指针变量 | 字符数组名 |
比较字符指针变量和字符数组
1.
字符数组是由许多元素组成的,里面只能一个一个来存放一个字符,存放的是‘字符’,而字符指针只是存放字符串中第一个字符的地址,而不是整个字符,
2.
可以对字符指针变量进行赋值,而不能对数组名进行赋值。(数组名代表地址,是常量,不能赋值)
3.
初始化含义不同。数组可以在定义时随便对其赋值,但不能用赋值语句对字符数组中的全部元素整体赋值。而指针数组可以后再进行赋值语句。
4.
开辟的存储空间不同。字符数组将会根据字符串长度或者人为定义的长度来分配储存单元。而字符指针变量,只会分配一个储存单元,用来存放首元素地址。
5.
指针变量的值后期可以自行设定改变,而字符数组的数组名代表一个固定的值(首元素地址)不能改变。
6.
字符数组中各元素的值可以改变,而字符指针变量指向的字符串常量中的内容是不能改变的。
相关文章:
指针引用字符串问题(详解)
通过指针引用字符串可以更加方便灵活的使用字符串。 字符串的引用方式有两种,下面简单介绍一下这两种方法。 1.用字符数组来存放一个字符串。 1.1 可以通过数组名和下标来引用字符串中的一个字符。 1.2 还可以通过数组名和格式声明符%s输出整个字符串。 具体实…...
数据结构——哈夫曼树编程,输入权值实现流程图代码
一、须知 本代码是在数据结构——哈夫曼树编程上建立的,使用时需将代码剪切到C等软件中。需要输入权值方可实现流程图,但是还需要按照编程换算出的结果自己用笔画出流程图。 下面将代码粘贴到文章中,同时举一个例子:二、代…...
【MySQL】 事务
😊😊作者简介😊😊 : 大家好,我是南瓜籽,一个在校大二学生,我将会持续分享Java相关知识。 🎉🎉个人主页🎉🎉 : 南瓜籽的主页…...
Java测试——selenium常见操作(2)
这篇博客继续讲解一些selenium的常见操作 selenium的下载与准备工作请看之前的博客:Java测试——selenium的安装与使用教程 先创建驱动 ChromeDriver driver new ChromeDriver();等待操作 我们上一篇博客讲到,有些时候代码执行过快,页面…...
【三维点云】01-激光雷达原理与应用
文章目录内容概要1 激光雷达原理1.1 什么是激光雷达?1.2 激光雷达原理1.3 激光雷达分类三角法TOF法脉冲间隔测量法幅度调制的相位测量法相干法激光雷达用途2 激光雷达安装、标定与同步2.1 激光雷达安装方式考虑因素2.2 激光雷达点云用途2.3 数据融合多激光雷达数据融…...
自动驾驶感知——物体检测与跟踪算法|4D毫米波雷达
文章目录1. 物体检测与跟踪算法1.1 DBSCAN1.2 卡尔曼滤波2. 毫米波雷达公开数据库的未来发展方向3. 4D毫米波雷达特点及发展趋势3.1 4D毫米波雷达特点3.1.1 FMCW雷达角度分辨率3.1.2 MIMO ( Multiple Input Multiple Output)技术3.2 4D毫米波雷达发展趋势3.2.1 芯片级联3.2.2 专…...
C语言(内联函数(C99)和_Noreturn)
1.内联函数 通常,函数调用都有一定的开销,因为函数的调用过程包含建立调用,传递参数,跳转到函数代码并返回。而使用宏是代码内联,可以避开这样的开销。 内联函数:使用内联diamagnetic代替函数调用。把函数…...
图卷积神经网络(GCN)理解与tensorflow2.0 代码实现 附完整代码
图(Graph),一般用 $G=(V,E)$ 表示,这里的$V$是图中节点的集合,$E$ 为边的集合,节点的个数用$N$表示。在一个图中,有三个比较重要的矩阵: 特征矩阵$X$:维度为 $N\times D$ ,表示图中有 N 个节点,每个节点的特征个数是 D。邻居矩阵$A$:维度为 $N\times N$ ,表示图中 N…...
模电学习6. 常用的三极管放大电路
模电学习6. 常用的三极管放大电路一、判断三极管的工作状态1. 正偏与反偏的概念2. 工作状态的简单判断二、三种重要的放大电路1. 共射电路2. 共集电极放大电路3. 共基极放大电路一、判断三极管的工作状态 1. 正偏与反偏的概念 晶体管分P区和N区, 当P区电压大于N区…...
Lesson 6.6 多分类评估指标的 macro 和 weighted 过程 Lesson 6.7 GridSearchCV 的进阶使用方法
文章目录一、多分类评估指标的 macro 和 weighted 过程1. 多分类 F1-Score 评估指标2. 多分类 ROC-AUC 评估指标二、借助机器学习流构建全域参数搜索空间三、优化评估指标选取1. 高级评估指标的选用方法2. 同时输入多组评估指标四、优化后建模流程在正式讨论关于网格搜索的进阶…...
基于 Python 实时图像获取及处理软件图像获取;图像处理;人脸识别设计 计算机毕设 附完整代码+论文 +报告
界面结果:图像获取;图像处理;人脸识别 程序结构设计 图形用户界面设计与程序结构设计是互为表里的。或者说,程序结构设计是软件设计最本质、最核心的内容。徒有界面而内部逻辑结构混乱的软件一无是处。 Windows 操作系统是一款图形化的操作系统,相比于早期的计算机使用的命…...
前后端RSA互相加解密、加签验签、密钥对生成(Java)
目录一、序言二、关于PKCS#1和PKCS#8格式密钥1、简介2、区别二、关于JSEncrypt三、关于jsrsasign四、前端RSA加解密、加验签示例1、相关依赖2、cryptoUtils工具类封装3、测试用例五、Java后端RSA加解密、加验签1、CryptoUtils工具类封装2、测试用例六、前后端加解密、加验签交互…...
基于Java+SpringBoot+Vue前后端分离学生宿舍管理系统设计与实现
博主介绍:✌全网粉丝3W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建、毕业项目实战、项目定制✌ 博主作品:《微服务实战》专栏是本人的实战经验总结,《S…...
前端高频面试题—JavaScript篇(二)
💻前端高频面试题—JavaScript篇(二) 🏠专栏:前端面试题 👀个人主页:繁星学编程🍁 🧑个人简介:一个不断提高自我的平凡人🚀 🔊分享方向…...
【微信小游戏开发笔记】第二节:Cocos开发界面常用功能简介
Cocos开发界面常用功能简介 本章只介绍微信小游戏开发时常用的功能,其他功能不常用,写多了记不住(其实是懒 -_-!): 层级管理器,用于操作各个节点。资源管理器,用于操作各种文件资源。场景编辑…...
3分钟,学会了一个调试CSS的小妙招
Ⅰ. 作用 用于调试CSS , 比控制台添更加方便,不需要寻找 ;边添加样式,边可以查看效果,适合初学者对CSS 的理解和学习; Ⅱ. 快速实现(两边) ① 显示这个样式眶 给 head 和 style 标签添加一个…...
【项目精选】基于jsp的健身俱乐部会员系统
点击下载源码 社会可行性 随着社会的发展和计算机技术的进步,人类越来越依赖于信息化的管理系统,这种系统能更加方便的获得信息以及处理信息。人们都改变了过去的思维,开始走向了互联网的时代,在 可行性小结 本章在技术可行性上…...
java注解
1. Java注解(Annotation) 2. Java注解分类 3. JDK基本注解 4. JDK元注解 5. 注解分类 6. 自定义注解开发 7. 提取Annotation信息 8. 注解处理器 9. 动态注解处理器(spring aop方式) 1. Java注解(Annotation) Java注解是附加在代码中的一些元信息,用于…...
移动测试相关
一、环境搭建 准备工作: (python、pycharm安装配置好) 1、Java SDK 安装配置 Java Downloads | Oracle 下载安装后配置系统环境变量:JAVA_HOME(jdk根目录路径)和path(jdk根目录下的bin目录路径…...
SIGIR22:User-controllable Recommendation Against Filter Bubbles
User-controllable Recommendation Against Filter Bubbles 摘要 推荐系统经常面临过滤气泡的问题:过度推荐基于用户特征以及历史交互的同质化项目。过滤气泡将会随着反馈循环增长,缩小了用户兴趣。现有的工作通常通过纳入诸如多样性和公平性等准确性之…...
Python中的进程线程
文章目录前言多进程与多线程基本概念多进程multiprocessing 类对象进程池subprocess模块进程间通信多线程threading实现线程操作线程共享所有变量线程锁参考资料前言 又花了点时间学习了一下Python中的多线程与多进程的知识点,梳理一下供复习参考 多进程与多线程 …...
python(8):使用conda update更新conda后,anaconda所有环境崩溃----问题没有解决,不要轻易更新conda
文章目录0. 教训1. 问题:使用conda update更新conda后,anaconda所有环境崩溃1.1 问题描述1.2 我搜索到的全网最相关的问题----也没有解决3 尝试流程记录3.1 重新安装pip3.2 解决anaconda编译问题----没成功0. 教训 (1) 不要轻易使用conda update更新conda----我遇到…...
c++11 标准模板(STL)(std::multimap)(四)
定义于头文件 <map> template< class Key, class T, class Compare std::less<Key>, class Allocator std::allocator<std::pair<const Key, T> > > class multimap;(1)namespace pmr { template <class Key, class T…...
乐观锁及悲观锁
目录 1.乐观锁 (1).定义 (2).大体流程 (3).实现 (4).总结 2.悲观锁 (1).定义 (2).大体流程 (3).实现 (4).缺点 (5).总结 1.乐观锁 (1).定义 乐观锁在操作数据时非常乐观,认为别的线程不会同时修改数据所以不会上锁,但是在更新的时候会判断一…...
常见的锁策略
注意: 接下来讲解的锁策略不仅仅是局限于 Java . 任何和 "锁" 相关的话题, 都可能会涉及到以下内容. 这些特性主要是给锁的实现者来参考的.普通的程序猿也需要了解一些, 对于合理的使用锁也是有很大帮助的. 1.乐观锁 vs 悲观锁 悲观锁: (认为出现锁冲…...
springboot学习(八十) springboot中使用Log4j2记录分布式链路日志
在分布式环境中一般统一收集日志,但是在并发大时不好定位问题,大量的日志导致无法找出日志的链路关系。 可以为每一个请求分配一个traceId,记录日志时,记录此traceId,从网关开始,依次将traceId记录到请求头…...
10种ADC软件滤波方法及程序
10种ADC软件滤波方法及程序一、10种ADC软件滤波方法1、限幅滤波法(又称程序判断滤波法)2、中位值滤波法3、算术平均滤波法4、递推平均滤波法(又称滑动平均滤波法)5、中位值平均滤波法(又称防脉冲干扰平均滤波法&#x…...
第五章:Windows server加域
加入AD域:教学视频:https://www.bilibili.com/video/BV1xM4y1D7oL/?spm_id_from333.999.0.0首先我们选择一个干净的,也就是新建的没动过的Windows server虚拟机。我们将DNS改成域的ip地址,还要保证它们之间能ping的通,…...
Elasticsearch:获取 nested 类型数组中的所有元素
在我之前的文章 “Elasticsearch: object 及 nested 数据类型” 对 nested 数据类型做了一个比较详细的介绍。在实际使用中,你在构建查询时肯定会遇到一些问题。根据官方文档介绍,nested 类型字段在隐藏数组中索引其每个项目,这允许独立于索引…...
English Learning - Day53 作业打卡 2023.2.7 周二
English Learning - Day53 作业打卡 2023.2.7 周二引言1. 我必须承认,我之前学习没你用功。have to VS must2. 这跟我想得一样简单。3. 生活并不像它看上去那么顺风顺水,但也不会像我们想象得那么难。Look VS seem4. 你比去年高多了。5. 你关心你的工作胜…...
wordpress 懒人图库/关键词代发排名首页
如何启动关闭tomcat Windows平台: 在/bin下,startup.bat、shutdown.bat。启动时,鼠标双击startup.bat文件;关闭时,鼠标双击shutdown.bat。 Linux平台: 在/bin下,startup.sh、shutdown.sh。启动…...
从零学建设网站018马经/分享推广
1 ,BLE就是低功率蓝牙。要着重了解两种设备: 1,dual-mode双模设备:简单说就是向下兼容。2,single-mode单模设备:仅仅支持BLE。关于开发主要讲的是单模设备,它可以只靠纽扣电池即可持续工作。2&a…...
深圳市年年卡网络科技有限公司/seo网站推广是什么
仅作为记录,大佬请跳过。 加入,dtypetorch.float即可 #label torch.full((b_size,), real_label, devicedevice)label torch.full((b_size,), real_label, devicedevice,dtypetorch.float)参考 感谢大佬博主文章传送门...
站酷设计网站官网入口下载/seo网站监测
&&,||,(),{},& 五个符号的运用shell脚本执行命令的时候,有时候会依赖于前一个命令是否执行成功。而&&和||就是用来判断前一个命令执行效果的。1 && 使用方法:cmd1 && cmd2 这个方式简单明了,cmd1如…...
企业做网站的注意事项/河北疫情最新情况
在家用领域当中,无线网络WI-FI成为了我们生活中必不可少的一环。大家在选购路由器的时候经常会看到有的产品会在详情页中标注双频WIFI等字眼,这是什么意思呢?你有了解过吗?其实双频WIFI指的是“支持两个不同频段的无线信号”&…...
百花广场做网站的公司/优化网站标题是什么意思
本文转载自:Sunddenly(⊙_⊙) 一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境;■ 伪集群模式:就是在一台…...