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

8.4 【C语言】通过指针引用字符串

8.4.1 字符串的引用方式

在C程序中,字符串是存放在字符数组中的。想引用一个字符串,可以用以下两种方法。

(1)用字符数组存放一个字符串,可以通过数组名和下标引用字符串中一个字符,也可以通过数组名和格式声明“%s”输出该字符串。

例:定义一个字符数组,在其中存放字符串“I love China!”,输出该字符串和第8个字符。

#include<stdio.h>
int main(){char string[]="I Love China!";printf("%s\n",string);printf("%c\n",string[7]);return 0;
}

例:将字符串a复制为字符串b,然后输出字符串b。

#include<stdio.h>
int main(){char a[ ]="I am a student",b[20];int i;for(i=0;*(a+i)!='\0';i++)*(b+i)=*(a+i);*(b+i)='\0';printf("string a is:%s\n",a);printf("string b is:");for(i=0;b[i]!='\0';i++)printf("%c",b[i]);printf("\n");return 0;
}

例:用函数调用实现字符串的复制

#include<stdio.h>
int main(){void copy_string(char from[],char to[]);char a[]="I am a teacher.";char b[]="you are a student.";printf("string a=%s\nstring b=%s\n",a,b);printf("\ncopy string a to string b:\n");copy_string(a,b);printf("string a=%s\nstring b=%s\n",a,b);return 0;
}
void copy_string(char from[],char to[]){int i=0;while(from[i]!='\0'){to[i]=from[i];i++;    }to[i]='\0';
}

8.4.3 使用字符指针变量和字符数组的比较

字符数组和字符指针变量都能实现字符串的存储和运算,二者之间区别有以下几点。

(1)字符数组由若干个元素组成,每个元素中放一个字符,而字符指针变量中存放的是地址(字符串第1个字符的地址),绝不是将字符串放到字符指针变量中。

(2)赋值方式。可以对字符指针变量赋值,但不能对数组名赋值。

(3)初始化含义,对字符指针变量赋初值。

char *a="I love China!";等价于 char *a;a="I love China!";

(4)存储单元的内容。编译时为字符数组分配若干存储单元,以存放各元素的值,而对字符指针变量,只分配一个存储单元。

(5)指针变量的值是可以改变的,而字符数组名代表一个固定的值(数组首元素的地址),不能改变。

例8.21:改变指针变量的值

#include<stdio.h>
int main(){char *a="I love China!";a=a+7;                     //改变指针变量的值,改变指针变量的指向printf("%s\n",a);         //输出从a指向的字符开始的字符串return 0;
}

(6)字符数组中各元素的值是可以改变的,但字符指针变量指向的字符串常量中的内容是不可以被取代的。

(7)引用数组元素。

(8)用指针变量指向一个格式字符串,可以用它代替printf函数中的格式字符串。

相关文章:

8.4 【C语言】通过指针引用字符串

8.4.1 字符串的引用方式 在C程序中&#xff0c;字符串是存放在字符数组中的。想引用一个字符串&#xff0c;可以用以下两种方法。 &#xff08;1&#xff09;用字符数组存放一个字符串&#xff0c;可以通过数组名和下标引用字符串中一个字符&#xff0c;也可以通过数组名和格…...

【广州华锐视点】AR配电所巡检系统:可视化巡检利器

随着科技的发展&#xff0c;人工智能、大数据等技术逐渐应用于各个领域&#xff0c;为人们的生活带来便利。在电力行业&#xff0c;AR(增强现实)技术的应用也日益广泛。AR配电所巡检系统作为一种新型的巡检方式&#xff0c;可以实现多种功能&#xff0c;提高巡检效率&#xff0…...

微服务中间件--http客户端Feign

http客户端Feign http客户端Feigna.Feign替代RestTemplateb.自定义Feign的配置c.Feign的性能优化d.Feign的最佳实践分析e.Feign实现最佳实践(方式二) http客户端Feign a.Feign替代RestTemplate 以前利用RestTemplate发起远程调用的代码&#xff1a; String url "http:…...

C语言学习系列-->【关于qsort函数的详解以及它的模拟实现】

文章目录 一、概述二、qsort函数参数介绍三、qsort实现排序3.1 qsort实现整型数组排序3.2 qsort实现结构体数组排序 四、模拟实现qsort函数 一、概述 对数组的元素进行排序 对数组中由 指向的元素进行排序&#xff0c;每个元素字节长&#xff0c;使用该函数确定顺序。 此函数使…...

Linux系统安全:NAT(SNAT、DNAT)

目录 一.NAT 二.SNAT 三.DNAT 一.NAT NAT: network address translation&#xff0c;支持PREROUTING&#xff0c;INPUT&#xff0c;OUTPUT&#xff0c;POSTROUTING四个链 请求报文&#xff1a;修改源/目标IP&#xff0c; 响应报文&#xff1a;修改源/目标IP&#xff0c;根据…...

【数据库】MySQL存储过程:提升数据库性能和操作效率的利器

在数据库管理系统中&#xff0c;存储过程是一种重要的数据库对象&#xff0c;它允许将一组复杂的SQL语句组合起来&#xff0c;形成一个独立的单元进行重复使用。存储过程可以极大地提高数据库的性能和操作效率&#xff0c;降低网络流量&#xff0c;减轻系统负载。本文将深入探讨…...

rust写一个多线程和协程的例子

当涉及到多线程和协程时&#xff0c;Rust提供了一些非常强大的工具&#xff0c;其中最常用的库之一是tokio&#xff0c;它用于异步编程和协程。下面我将为你展示一个简单的Rust程序&#xff0c;演示如何使用多线程和协程。 首先&#xff0c;你需要在你的项目的Cargo.toml文件中…...

react18+antd5.x(1):Notification组件的二次封装

antdesign已经给我们提供了很好的组件使用体验,但是我们还需要根据自己的项目业务进行更好的封装,减少我们的代码量,提升开发体验 效果展示 开起来和官网的使用没什么区别,但是我们在使用的时候,进行了二次封装,更利于我们进行开发 MyNotification.jsx,是我们的业务页面…...

jenkins运行pytest测试用例脚本报错:没有权限,无法写日志PermissionError:[Error 13]Permission denied

报错信息&#xff1a; PermissionError:[Error 13]Permission denied&#xff1a;‘/var/jenkins_home/workspace/deleverySystem/Delivery_System/out_files/logs/waimai_20230823.log’ 解决方法&#xff1a; 在jenkins容器内部输入 chmod -R 777 /var/jenkins_home/works…...

数据结构 day1

1>x.mind 2>间接定义结构体数组&#xff0c;进行4种方式的定义和初始化 3>定义结构体存储10辆车&#xff08;车的信息&#xff1a;品牌、单价、颜色&#xff09; 1.定义函数&#xff0c;实现循环输入 2.定义函数&#xff0c;实现排序 3.定义函数&#xff0c;计算红色车…...

湖北咸宁农业三维扫描数字化农业3d打印制造应用-CASAIM中科广电

农业是人类衣食之源、生存之本&#xff0c;是一切生产的首要条件&#xff0c;CASAIM在农业三维扫描和3d打印应用上有丰富经验。 1.三维扫描技术在农业领域的应用 CASAIM三维扫描是集光学、机电和计算机技术于一体的高新无损检测技术&#xff0c;能够对实物的空间外形、结构乃…...

Jenkins的定时任务配置

jenkins配置定时任务位置(点击日程表的问好可查看语法配置) jenkins的定时任务的参数 # 定时任务参数(每个参数之间使用tab键或空格分隔)MINUTE HOUR DOM MONTH DOW 参数解释取值范围 MINUTE 分钟0-59HOUR小时0-23DOM一月的天数1-31MONTH月份1-12DOW 一周的天数0…...

THINKPHP 微联云投票系统源码独立版 + 支持刷礼物

THINKPHP 微联云投票系统源码独立版 支持刷礼物 nginxphp7.2以上 mysql5.6以上 简单测试后台基本没什么问题&#xff0c;暂时发现H5前端有bug,自行修复。...

Mongodb两种启动方法

一、命令行启动 1.修改存放数据库的位置 说明&#xff1a;E:\data\mongodb&#xff1b;我在E盘创建的文件夹mongodb mongod --dbpathE:\data\mongodb 2.成功启动 说明&#xff1a;默认端口27017&#xff0c;代表已经启动成功 &#xff0c;并在mongodb自动创建文件 二、配置项…...

Python:列表的浅拷贝与深拷贝

在python语言中&#xff0c;因为其面向对象的特性&#xff0c;在进行列表拷贝时可能会出现一些意想不到的结果&#xff0c;涉及到列表的浅拷贝和深拷贝相关问题&#xff0c;本文将对其进行总结。 首先我们来看以下代码。 my_list [1, 2, 3] your_list my_list your_list[0] …...

OnePlus Open可折叠手机:规格、价格、发布日期等详细信息汇总!

我们知道OnePlus可折叠手机即将问世,无论它是否被命名为OnePlus Open。我们迫不及待地想让它到来,为该公司再添一根弦,为最好的可折叠手机增添一个新的竞争对手。 OnePlus以前没有生产过任何可折叠产品,但它确实拥有合作伙伴公司Oppo的丰富知识,并可以向三星、摩托罗拉和…...

SQL 数据库

安装配置 【1】 MySQL安装配置教程&#xff08;超级详细、保姆级&#xff09; 【2】 MySQLNavicat安装配置教程&#xff08;超级详细、保姆级&#xff09; 学习资料 【戴师兄】SQL入门免费教程 刷题链接&#xff1a;https://share.mubu.com/doc/4BHMMbbvIMb 学习笔记&#xf…...

【算法系列篇】滑动窗口

文章目录 前言什么是滑动窗口1.长度最小的子数组1.1 题目要求1.2 做题思路 1.3 Java代码实现2.无重复字符的最长子串2.1 题目要求2.2 做题思路2.3 Java代码实现 3.最大连续1的个数 III3.1 题目要求3.2 做题思路3.3 Java代码实现 4.将x减到0的最小操作数4.1 题目要求4.2 做题思路…...

多维时序 | MATLAB实现BiTCN-BiGRU-Attention多变量时间序列预测

多维时序 | MATLAB实现SABO-CNN-GRU-Attention多变量时间序列预测 目录 多维时序 | MATLAB实现SABO-CNN-GRU-Attention多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 多维时序 | MATLAB实现BiTCN-BiGRU-Attention多变量时间序列预测。 模型描…...

Docker容器与虚拟化技术:Docker compose部署LNMP

目录 一、理论 1.LNMP架构 2.背景 3.Dockerfile部署LNMP 3.准备Nginx镜像 4.准备MySQL容器 5.准备PHP镜像 6.上传wordpress软件包 7.编写docker-compose.yml 8.构建与运行docker-compose 9.启动 wordpress 服务 10.浏览器访问 11.将运行中的 docker容器保存为 doc…...

观察Taotoken在多模型同时高并发调用下的服务表现

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 观察Taotoken在多模型同时高并发调用下的服务表现 在构建依赖大模型能力的应用时&#xff0c;一个常见的工程挑战是如何应对突发的…...

长期使用Taotoken Token Plan套餐带来的成本控制感受

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 长期使用Taotoken Token Plan套餐带来的成本控制感受 1. 从按需付费到预算规划 对于个人开发者或小型团队而言&#xff0c;大模型…...

终极指南:10分钟快速上手Ghidra逆向工程工具安装与配置

终极指南&#xff1a;10分钟快速上手Ghidra逆向工程工具安装与配置 【免费下载链接】ghidra_installer Helper scripts to set up OpenJDK 11 and scale Ghidra for 4K on Ubuntu 18.04 / 18.10 项目地址: https://gitcode.com/gh_mirrors/gh/ghidra_installer 还在为复…...

Taotoken如何助力AIGC内容创作团队平衡效果与成本

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 Taotoken如何助力AIGC内容创作团队平衡效果与成本 对于专注于短视频脚本、营销文案等AIGC内容生产的团队而言&#xff0c;频繁调用…...

“枯笔”“泼墨”“留白”在Midjourney中根本不存在?——资深数字书画师拆解6个被长期误用的东方美学关键词

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;东方美学与AI绘图的本质断层 气韵生动与像素采样的不可通约性 东方绘画传统以“气韵生动”为最高准则&#xff0c;强调笔意流转、留白呼吸、时间性观照与心手相忘的即兴生成。而当前主流AI绘图模型&am…...

为AI智能体构建可编程邮箱:mailbot实战指南

1. 项目概述&#xff1a;为AI智能体打造专属的“可编程邮箱”如果你正在开发一个AI智能体&#xff0c;无论是客服机器人、自动化工作流还是个人助理&#xff0c;让它具备收发邮件的能力往往是刚需。传统的做法是什么&#xff1f;要么去折腾Gmail的API&#xff0c;忍受OAuth授权…...

D2-Net:面向极端外观变化的端到端特征检测与描述方法

1. 这不是又一个特征匹配算法——D2-Net解决的是“连人眼都认不出是同一场景”的硬骨头你有没有试过&#xff0c;在暴雨夜拍一张街角咖啡馆的照片&#xff0c;隔天大晴时再拍一张&#xff0c;结果发现&#xff1a;招牌反光变了、玻璃窗映出的天空颜色完全不同、连门口那盆绿萝都…...

3大核心功能,让你的惠普OMEN游戏本性能彻底解放

3大核心功能&#xff0c;让你的惠普OMEN游戏本性能彻底解放 【免费下载链接】OmenSuperHub 使用 WMI BIOS控制性能和风扇速度&#xff0c;自动解除DB功耗限制。 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 还在为惠普OMEN游戏本官方软件过于臃肿而烦恼吗…...

AgentLimb:基于肌肉记忆的AI浏览器自动化,降低85% Token消耗

1. 项目概述&#xff1a;当AI学会“肌肉记忆”&#xff0c;浏览器自动化迎来新范式如果你和我一样&#xff0c;每天都在和AI助手打交道&#xff0c;让它们帮你写代码、分析数据&#xff0c;甚至尝试控制浏览器完成一些重复性任务&#xff0c;那你一定遇到过这个痛点&#xff1a…...

从DEM到glTF:打造跨平台三维地形模型的完整工作流

1. 为什么需要从DEM到glTF的三维地形工作流 三维地形模型在游戏开发、虚拟现实、城市规划等领域有着广泛应用。传统的工作流程往往存在平台兼容性差、数据转换复杂等问题。glTF作为"3D界的JPEG"&#xff0c;已经成为跨平台三维模型交换的事实标准。将数字高程模型&am…...