C语言指针知识点(一):字符指针(char *)及其格式输出(%c%d%s等)

2023-11-10

  1. 类型是分配内存块大小的别名,即类型(int,double,char)的作用就是分配相对应大小的内存,并给程序员一个名字(int,double,char)方便操作;

  2. 指针也是一种数据类型,定义时可以对其赋值(可赋任意地址值,但习惯赋值为NULL,方便操作管理),而操作符*是对指针所指示的地址上的数据进行操作,即不用*操作,改变的将会是地址变量的值,而不是地址变量所指的值。

 指针变量(*p):

%p 是输出指针变量的值,即地址值,以16进制形式输出

%d 是输出指针变量的值,是将16进制的地址值转换为10进制然后输出

	int a = 1;
	int *p = &a;
	printf("p1=%p\n", p);//输出地址值(默认的16进制形式)
	printf("p2=%d\n", p);//输出地址值的10进制形式
	printf("p3=%d\n", *p);//通过*,获取地址指向的内容,输出1

%s 是输出字符串,从指针指向字符开始,输出到"\0"结束

%c 是输出一个字符,即当前指针所指的单个字符

	char b[] = "lemon";//创建于栈区
	char *q = b;//等同于 char *q=&b[0]
	char *qq = &b[1];

	printf("sizeof(b)=%d  strlen(b)=%d\n", sizeof(b),strlen(b));//6  5

	printf("q1=%p\n", q);//输出16进制地址值
	printf("q2=%d\n", q);//输出10进制形式的地址值
	printf("q3=%s\n", q);//输出字符串
	printf("q4=%c\n", *q);//输出字符

	printf("b[0]=%c\n", b[0]);//输出字符l

	printf("qq1=%c\n", *qq);//输出字符
	printf("qq2=%s\n", qq);//输出字符串
	printf("qq4=%d\n", qq);//没有*,输出指针的地址值的10进制形式
	printf("qq3=%d\n", *qq);//有*,输出指针所指内容(e),但%d要求输出整型,故输出e的ASCII码
	

	for (int i = 0; i < 5; i++)
	{
		char *t = q + i;
		printf("%c  %s\n", *t, t);
		*t = 'a';//更改b
	}
	printf("%s", b);//aaaaa

输出结果:

 

	char *str = "lemon";//指针变量在栈区,字符串在全局区,通过指针指向建立联系,
						//*str的内容不能更改
	char *s = str;
	//*str = 'a';报写内存错误,str所指内容不可更改
	printf("&str1=%d, &s=%d\n", str, s);//输出10进制形式的地址值
	printf("&str2=%p, &s=%p\n", str, s);//输出16进制地址值
	printf("&str3=%c, &s=%c\n", str, s);//没有*,输出指针的地址值的10进制形式
										//但%c要求输出字符,将地址值转换为对应的字符输出
	printf("&str4=%c\n", *str);//有*,操作的是指针所指向的内容,故输出字符
	for (int i = 0; i < 6; i++)
	{
		
		printf("%s  ", s + i);	//输出字符串

	}
	printf("\n");
	for (int i = 0; i < 5; i++)
	{
		printf("%d  ", str + i);//输出10进制形式的地址值
		printf("%c  ", str + i);//%c要求输出字符,但没有*,输出10进制地址值对应的字符
		printf("%c  ", *(str + i));//有*,输出指针所指内容
		char *t = str;//指针传递
		t = t + i;
		printf("%c  ", *t);//有*,输出指针所指内容
		printf("\n");
	}

输出结果:

 

 

 

 

 

 

 

 

 

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言指针知识点(一):字符指针(char *)及其格式输出(%c%d%s等) 的相关文章

  • 检查空参数的最佳方法(保护子句)

    例如 您通常不希望构造函数中的参数为空 因此看到类似的内容是很正常的 if someArg null throw new ArgumentNullException nameof someArg if otherArg null throw
  • C 中的变量定义是什么意思[重复]

    这个问题在这里已经有答案了 你们能告诉我 这在 C 中意味着什么吗 define Privileged Data Privileged Data static int dVariable 编译器对变量进行寻址有特殊意义吗 这只是一个宏Pri
  • 为什么opencv videowriter这么慢?

    你好 stackoverflow 社区 我有一个棘手的问题 我需要你的帮助来了解这里发生了什么 我的程序从视频采集卡 Blackmagic 捕获帧 到目前为止 它工作得很好 同时我用 opencv cv imshow 显示捕获的图像 它也工
  • 关闭 XDOCUMENT 的实例

    我收到这个错误 该进程无法访问文件 C test Person xml 因为它是 被另一个进程使用 IOException 未处理 保存文件内容后如何关闭 xml 文件的实例 using System using System Collec
  • 在 GCC 和 Clang 下,使用 lambda 的简单 RAII 包装器的复制初始化意外失败

    我在创建一个简单的 RAII 包装器时遇到了一个意想不到的问题 更不用说下面代码的逻辑不完整性了 复制构造函数和赋值运算符未删除等 这意味着是一个SSCCE 令我印象深刻的是复制初始化我的包装器与临时 lambda 的结果会导致编译错误 而
  • C# 中附加/分离事件处理程序的不同方式有什么区别

    我的问题有两个部分 首先 我们可以通过以下两种方式附加事件处理程序 myObject MyEvent new EventHandler MyHandler myObject MyEvent MyHandler 据我了解 这两者是等价的 在第
  • 通过引用传递时取消引用指针

    当通过引用传递给函数时取消引用指针时会发生什么 这是一个简单的例子 int returnSame int example return example int main int inum 3 int pinum inum std cout
  • 如何在 Windows 窗体中运行屏幕保护程序作为其背景?

    如何在 Windows 窗体中运行屏幕保护程序作为其背景 用户还可以在屏幕保护程序运行时与表单控件进行交互 为什么这个 我们有一个案例 需要在用户时运行 Windows Bubbles 屏幕保护程序 可以继续与表单控件交互吗 您可以使用以下
  • .net Framework (.net 4.0) 中定义 Base 3 数字的类

    我正在寻找一些可以用来定义 3 基数 三进制数 的类 有什么我可以在 net 框架中使用的东西或者我需要写一些东西吗 谢谢你的帮助 您可以使用解析Convert ToInt32 s base http msdn microsoft com
  • 使用 openssl 检查服务器安全协议

    我有一个框架应用程序 它根据使用方式连接到不同的服务器 对于 https 连接 使用 openssl 我的问题是 我需要知道我连接的服务器是否使用 SSL 还是 TLS 以便我可以创建正确的 SSL 上下文 目前 如果我使用错误的上下文尝试
  • 更改其他页面的主窗口内容

    在 WPF 应用程序的主窗口中 我有一个 Badged 元素 来自材料设计 这是我的代码
  • C# 中处理 SQL 死锁的模式?

    我正在用 C 编写一个访问 SQL Server 2005 数据库的应用程序 该应用程序是数据库密集型的 即使我尝试优化所有访问 设置适当的索引等 我预计迟早会遇到死锁 我知道为什么会发生数据库死锁 但我怀疑我能否在某个时候发布不发生死锁的
  • 如何不在类中实现接口的功能?

    面试时面试官问了我以下问题 但我不知道这个问题的答案是什么 请帮忙 如果我不想 我必须做什么 在我的类中实现一个函数 在接口中声明为 由我班实施 Edited 我正在使用 NET 和 C 如果有人可以提供 C 示例代码示例 那就太好了 Th
  • 无法通过 LINQ to Entities 使用某些功能?

    我正在尝试使用 LINQ 查询在项目上实现搜索功能 由于数据有时包含带有重音符号和其他符号的字符 因此我创建了一种方法来删除这些字符以进行搜索 这是我的代码 var addresses from a in db Addresses join
  • 为什么C语言中可以使用多个分号?

    在 C 中我可以执行以下操作 int main printf HELLO WORLD 它有效 这是为什么 我个人的想法 分号是一个 NO OPERATION 来自维基百科 指示符 拥有一大串分号与拥有一个分号并告诉 C 语句已结束具有相同的
  • 如何将 CSV 文件读入 .NET 数据表

    如何将 CSV 文件加载到System Data DataTable 根据CSV文件创建数据表 常规 ADO net 功能是否允许这样做 我一直在使用OleDb提供者 但是 如果您正在读取具有数值的行 但希望将它们视为文本 则会出现问题 但
  • 将一个 long 转换为两个 int 以进行重构

    我需要将一个参数作为两个 int 参数传递给 Telerik Report 因为它不能接受长参数 将 long 拆分为两个 int 并在不丢失数据的情况下重建它的最简单方法是什么 使用掩蔽和移位是最好的选择 根据文档 long 保证为 64
  • c# 替代方案中 cfusion_encrypt 中填充的密钥是什么?

    我找到了从这里复制 C 中的 cfusion encrypt 函数的答案 ColdFusion cfusion encrypt 和 cfusion decrypt C 替代方案 https stackoverflow com questio
  • 通过 cmake 链接作为外部项目包含的 opencv 库[重复]

    这个问题在这里已经有答案了 我对 cmake 比较陌生 经过几天的努力无法弄清楚以下事情 我有一个依赖于 opencv 的项目 它本身就是一个 cmake 项目 我想静态链接 opencv 库 我正在做的是我的项目中有一份 opencv 源
  • 将文本从文本文件添加到 PDF 文件[重复]

    这个问题在这里已经有答案了 这是我的代码 using FileStream msReport new FileStream pdfPath FileMode Create step 1 using Document pdfDoc new D

随机推荐

  • 微信小程序——image图片组件宽高自适应方法(可详细了!)

    前言 第一次做小程序的时候使用了image图片组件 src引用一张图片后 给图片的样式设置了width 100 发现图片变形了 我想要的效果是 图片在父级中的宽是占据父级元素的100 高度自动适应 按照html中的图片在浏览器中默认显示逻辑
  • 如何解决Linux删除文件但是磁盘空间大小并没有释放的问题?

    一句话解释是因为删除的文件正在使用 关键词 文件已删除 但是df没有正确显示磁盘剩余容量 lsof grep deleted 磁盘剩余空间明显不符合预期 删除一个大文件 但还是提示磁盘空间已满 No space left on device
  • 从0写bootloader — 最简单的bootloader和App

    地址空间划分 对于空间划分是人为定义的 bootloader编写 启动文件start s PRESERVE8 instruct is aligned by 8 bytes 指令集8字节对齐 THUMB use Thumb instructi
  • CISCN2022全国初赛题解WriteUp-MapleLeaves

    MapleLeaves WriteUp 队员 Do1phln b477ery sfc9982 0HB Web Ezpop thinkphp 6 0 12lts 存在反序列化漏洞 https www freebuf com vuls 3215
  • Unity销毁对象的问题

    最近踩了一点坑 对象有时立即销毁比较好 不然有奇怪的错误发生 比如新旧同名骨骼替换 之前的最好parent null 然后Destroy obj 如果只写Destroy的话 由于Destroy是延迟销毁对象 那么新骨骼Instantiate
  • stm32 IO输出举例

    以控制有源蜂鸣器为例 有源蜂鸣器是自带震动源的器件 无源蜂鸣器则需要方波来模拟震动源 1 硬件连接 我们可以看到蜂鸣器接在PB8 而且不是直接使用IO驱动蜂鸣器 蜂鸣器功率比较大 一般都会使用三极管作为输出控制 我们可以看到黄色部分说明了P
  • zookeeper配置

    基本事件单元 以毫秒为单位 必须 tickTime 2000 监听客户端连接的端口 必须 clientPort 2181 存储快照的目录 必须 dataDir F server0 zookeeper 3 4 6 dataTmp log目录
  • C语言—总结2—数组,字符数组与字符串的关系,字符串操作函数,输入输出函数

    一 数组 1 一维数组的创建 数组是一组同类型元素的集合 类型符 数组名 常量表达式 lt 1 gt 一般方法 lt 2 gt 宏定义 数组创建时 内必须是一个常量 2 数组的初始化 数组的初始化是指在创建数组的同时 给数组一些对应的初始化
  • 嵌入式Linux系统上的GCC编译器——编译过程.c .i .s .o

    开发板上没有GCC编译器需要安装 sudo apt install gcc 查看gcc版本 gcc v 下图内为gcc版本 基本语法 o 指定生成的可执行文件的名字 o 后面直接跟输出的名字就可以 E 只进行预处理 S 只编译 c 编译并汇
  • JDK8新特性-Stream流

    一 介绍 Java 8 API添加了一个新的抽象称为流Stream 可以让你以一种声明的方式处理数据 Stream 主要用于集合操作 极大的简化了代码 同时支持链式编程 Stream API可以极大提高Java程序员的生产力 让程序员写出高
  • 基于混沌搜索策略的鲸鱼优化算法-附代码

    基于混沌搜索策略的鲸鱼优化算法 文章目录 基于混沌搜索策略的鲸鱼优化算法 1 鲸鱼优化算法 2 改进鲸鱼优化算法 2 1 混沌反向学习初始化策略 2 2 收敛因子和惯性权重混沌扰动协同更新策略 2 3最优个体混沌搜索策略 3 实验结果 4
  • ajax传php变量,使用Ajax将Javascript变量传递给PHP

    目前 我正在使用Ajax来开发现有脚本 这是我以前从未使用过的东西 我在javascript文件中设置了一个变量 该变量从页面上的输入字段获取其值 我只需要使用Ajax将其发布到我的PHP页面 不知道从哪里开始 我不确定您需要查看什么代码
  • 基于支持向量机SVM的沪深300股票预测股票涨跌方向

    结果参考 https www bilibili com video BV1nY411z7Kk spm id from 333 999 0 0 附完整代码 数据
  • Linux中FTP配置文件详解

    Linux中FTP的配置文件是 etc vsftpd vsftpd conf 1 登录和对匿名用户的设置 anonymous enable YES 设置是否允许匿名用户登录FTP服务器 默认为YES local enable YES 是否允
  • 从五个方面参与孩子的编程教育

    很多家长在考虑是否让孩子学习编程的时候 会因为自己不懂编程 觉得无法参与孩子的学习过程 也不知道如何检验孩子的学习成果 内心的一系列不确定性 导致再三犹豫 其实 少儿编程的学习也是有阶段性的 家长最重要的责任往往不是所谓的 辅导 而是在启蒙
  • js逆向-无限debugger的原理及绕过

    前言 转载自 爬虫从入门到精通 12 js调试中的一些问题 无限debugger 调试干扰 内存爆破 转载自 js 无限debugger 的原理 以及解决办法 文章目录 前言 一级目录 二级目录 三级目录 一 调试检测 1 无法打开f12
  • 拖拽更新层级分类、更新层级id树:

    program mycs java description 拖拽编辑试题分类标签参数数据类 author wupeiguo create 2020 03 17 11 30 Data Accessors chain true ApiModel
  • CCS软件的Graph功能

    如何正确使用CCS自带绘图Graph功能 Single Time使用演示 点击菜单栏Tools gt Graph gt Single Time 如图所示 点开后出现如下的对话窗口 下面对里面的每一项参数进行一下说明 Acquisition
  • linux系统PC机安装(非虚拟机,以centos为例)

    centos介绍 CentOS CommunityEnterprise Operating System 中文意思是 社区企业操作系统 我们有很多人叫它 社区企业操作系统 不管你怎么叫它 它都是linux的一个发行版本 CentOS并不是全
  • C语言指针知识点(一):字符指针(char *)及其格式输出(%c%d%s等)

    类型是分配内存块大小的别名 即类型 int double char 的作用就是分配相对应大小的内存 并给程序员一个名字 int double char 方便操作 指针也是一种数据类型 定义时可以对其赋值 可赋任意地址值 但习惯赋值为NULL