C语言从头学30——字符串

1.基本概念
       C语言没有独立的字符串类型,字符串被当作字符数组处理。但在处理字符串时,在字符串最后一个字符后边会自动添加一个全是二进制 0 的字节,写作 "\0" 字符,表示字符串结束。所有字符串的最后一个字符,都是 "\0" 。这样不需知道字符串的长度,就可以读取内存里面的字符串,一旦读到字符 "\0" 则字符串结束。也由此,声明的字符串长度与实际能存放的字符串长度差一个,即 "\0" 。
       正因为字符串是字符数组,所以有关数组的操作对于字符串同样适用。
       字符串数组赋初值可以写成大括号内单引号引着的一个个字符。这样写是太麻烦,实际中的字符串赋初值是用一对双引号把连续字符引起来;它与字符数组等价,但形式简单。例如:
       char myStr[] = "Hello World!";  //强调:这种写法只能是在字符数组声明时赋初值
       上面声明的字符串,名:myStr 长度:13(包含空格、结尾"\0")。这个 "\0" 一定要牢记,比如:char a='1'; 与char a[] = "1";  这两者一个是双引号一个是单引号,区别就在 "\0"上,"1"不但有1还有 "\0",而'1'只有1。
       如果字符串中,本身就包含双引号怎么办呢?给双引号前边加上一个反斜杠(称为转义符)即\",就把双引号加到字符串中了。
       上面的举例如写成:myStr[]="Hello ""World";(即连续的几对双引号都赋给一个字符串)也是符合语法的,不会报错。
       在printf函数中输出字符串:常量直接输出,变量用%s占位符输出。
2.字符串变量的声明
      字符串变量可以按字符数组形式声明,也可以用指向字符数组的指针形式进行声明。
      char myStr[1024] = "C语言从头学"; //声明长度1024字节实际使用不了会初始化成 "\0"
                                                              //如果不写具体长度只写空的[ ],计算机会自己计算所需要的长度
      char* myStr = "C语言从头学";
      上面的声明形式上差不多,但还是有差异,表现在:
       a.字符数组声明的字符串变量可以一个一个字符进行修改,但不能重新赋值;
              char a[]="1134"; a[0]='0'; a[1]='2'; //合乎语法
             但如果:a[]="4311"; //会报错
       b.指针方式声明的字符串变量可以重新赋值,但不能单个字符进行修改;
              char* b="1111"; b="2222"; //合乎语法
              但如果:b[0]='2'; //可能报错或出现错误运算结果
3.说明:单独字符能不能修改的原因:为什么字符串声明为指针时不能单独字符修改,声明为数组时就可以修改?原因是声明为指针时,字符串是一个保存在内存“栈区”的常量,“栈区”的值由系统管理,一般都不允许修改;声明为数组时,字符串的副本会被拷贝到内存“堆区”,“堆区”的值由用户管理,是可以修改的。整个字符串能不能修改原因:以指针形式声明的字符串变量,因为其是变量故可以指向其它的字符串;而字符数组变量虽称作变量但不能指向另一个字符串,因为字符数组的数组名总是指向初始化时的地址,不能修改。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/778402.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

机器学习——岭回归

1、岭回归与线性回归的区别 岭回归(Ridge Regression)和线性回归(Linear Regression)都是用于回归分析的统计方法,但它们在处理方式和应用场景上有一些关键的区别: a)基本概念 线性回归:目标是…

网易游戏员工怒怼丁磊上热搜:每天员工陪你演戏点赞有意思吗

【头部财经】近日,网易游戏一员工在内部群怒怼丁磊的聊天记录曝光,引发网友关注。据头部财经了解,该员工名叫石佳煊,是网易游戏的游戏开发工程师,毕业于华盛顿大学,已在网易工作四年多。 截图显示&#xf…

提高论文发表机会:Nature Communications 最新研究教你如何巧妙回复审稿意见

我是娜姐 迪娜学姐 ,一个SCI医学期刊编辑,探索用AI工具提效论文写作和发表。 对于科研搬砖人来说,在论文投稿过程中,如何有效回复审稿意见才能得到审稿人的认可,一直是一个让人困惑又带点玄学的问题。 但是&#xff0c…

docker push 推送镜像到阿里云仓库

1.登陆阿里云 镜像服务,跟着指引操作就行 创建个人实例,创建命名空间、镜像仓库,绑定代码源头 2.将镜像推送到Registry $ docker login --username*** registry.cn-beijing.aliyuncs.com $ docker tag [ImageId] registry.cn-beijing.aliy…

白嫖A100-interLM大模型部署试用活动,亲测有效-2.Git

申明 以下部分内容来源于活动教学文档: Docs git 安装 是一个开源的分布式版本控制系统,被广泛用于软件协同开发。程序员的必备基础工具。 常用的 Git 操作 git init 初始化一个新的 Git 仓库,在当前目录创建一个 .git 隐藏文件夹来跟踪…

Linux 防火墙配置指南:firewalld 端口管理应用案例(二十个实列)

🏡作者主页:点击! 🐧Linux基础知识(初学):点击! 🐧🐧Linux高级管理专栏:点击! 🔐Linux中firewalld防火墙:点击! ⏰️…

策略为王股票软件源代码-----如何修改为自己软件62----资讯菜单修改-----举例---------调用同花顺F10资讯------

//char szInfoF10[] "http://www.f10.com.cn/ggzx/ggzl.asp?zqdm%s"; char szInfoF10[] "http://basic.10jqka.com.cn/601899/"; // MENUITEM "F10资讯(&F)", ID_INFO_F10 MENUITEM &…

14-26 剑和侠客 – 预训练模型三部曲3 – 机器人时代来临

概述 在第 1 部分和第 2 部分中,我们讨论了适用于文本和图像任务的预训练模型,并探索了当今常用的模型。我们分析了这些模型的架构以及如何将它们用于特定任务。实现 AGI 所需的两个主要支柱是语言理解和机器的视觉能力。有许多任务与这两种能力有关。 …

Unity中使用VectorGraphics插件时,VectorUtils.RenderSpriteToTexture2D方法返回结果错误的解决方法

Unity中使用VectorGraphics插件时,如果使用VectorUtils.BuildSprite方法创建Sprite,那么得到的Sprite往往是一个三角网格数比较多的Sprite,如果想要得到使用贴图只有两个三角面的方形Sprite,可以使用该插件提供的VectorUtils.Rend…

基于顺序表的通讯录实现

一、前言 基于已经学过的顺序表,可以实现一个简单的通讯录。 二、通讯录相关头文件 //Contact.h #pragma once#define NAME_MAX 20 #define TEL_MAX 20 #define ADDR_MAX 20 #define GENDER_MAX 20typedef struct PersonInfo {char name[NAME_MAX];char gender[G…

统一视频接入平台LntonCVS视频监控平台具体功能介绍

LntonCVS视频监控平台是一款基于H5技术开发的安防视频监控解决方案,专为全球范围内不同品牌、协议及设备类型的监控产品设计。该平台提供了统一接入管理,支持标准的H5播放接口,使其他应用平台能够快速集成视频功能。无论开发环境、操作系统或…

适用于Mac和Windows的最佳iPhone恢复软件

本文将指导您选择一款出色的iPhone数据恢复软件来检索您的宝贵数据。 市场上有许多所谓的iPhone恢复程序。各种程序很难选择并选择其中之一。一旦您做出了错误的选择,您的数据就会有风险。 最好的iPhone数据恢复软件应包含以下功能。 1.安全可靠。 2.恢复成功率高…

NoSQL 之 Redis 配置与常用命令

一、关系型数据库与非关系型数据库 1、数据库概述 (1)关系型数据库 关系型数据库是一个结构化的数据库,创建在关系模型(二维表格模型)基础上,一般面向于记 录。 SQL 语句(标准数据查询语言&am…

2024年地理信息技术与应用技能大赛·决赛(2024年地理信息技术与应用能力水平考试·中级)

目录 1 请将所有数据的空间参考统一。(2分) 1.1 题目要求 1.2 详细解析 2 制作台风轨迹图。(10分) 2.1 题目要求 2.2 详细解析 3 分析台风影响城市,并将结果以独立专题图的形式展示。(13分&#xff…

实例演示kafka stream消息流式处理流程及原理

以下结合案例&#xff1a;统计消息中单词出现次数&#xff0c;来测试并说明kafka消息流式处理的执行流程 Maven依赖 <dependencies><dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-streams</artifactId><exclusio…

笔记13:switch多分支选择语句

引例&#xff1a; 输入1-5中的任意一共数字&#xff0c;对应的打印字符A,B,C,D,E int num 0; printf("Input a number[1,5]:"); scanf("%d"&#xff0c;&num); if( num 1)printf("A\n"); else if(num2)printf("B\n"); else i…

【大数据】—FIFA世界杯探索性分析(EDA)

引言 足球&#xff0c;作为全球最受欢迎的运动之一&#xff0c;拥有庞大的粉丝群体和深远的文化影响。自1930年首届FIFA世界杯举办以来&#xff0c;这项赛事已经成为全球体育盛事&#xff0c;吸引了数十亿观众的目光。世界杯不仅是各国足球技艺的较量&#xff0c;更是国家荣誉…

02STM32环境搭建新建工程

STM32环境搭建&新建工程 软件安装&#xff1a;开发方式&新建工程步骤&架构 个人心得 软件安装&#xff1a; 安装Keil5 MDK 安装器件支持包 软件注册 安装STLINK驱动 安装USB转串口驱动 开发方式&新建工程步骤&架构 STM32开发方式&#xff1a; 1.寄存器 …

笔记14:程序中的循环结构

生活中的循环现象&#xff1a; -日复一日&#xff0c;年复一年 -春夏秋冬&#xff0c;四季交替 -周日&#xff0c;周一&#xff0c;周二&#xff0c;周三&#xff0c;周四&#xff0c;周五&#xff0c;周六 -人生是一个轮回&#xff0c;多年后&#xff0c;又会回到最初的原点 …

APP渗透-android12夜神模拟器+Burpsuite实现

一、夜神模拟器下载地址&#xff1a;https://www.yeshen.com/ 二、使用openssl转换证书格式 1、首先导出bp证书 2、将cacert.der证书在kali中转换 使用openssl生成pem格式证书,并授予最高权限 openssl x509 -inform der -in cacert.der -out cacert.pem chmod 777 cacert…