OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3126|回复: 3

C语言里字符串还能这么用,受教了

[复制链接]

4

主题

48

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
205
金钱
205
注册时间
2019-6-15
在线时间
36 小时
发表于 2019-8-5 09:57:37 | 显示全部楼层 |阅读模式
1 #include <stdio.h>
  2 #include <stdint.h>
  3 #include <string.h>
  4
  5 #define STR      "World"
  6 void Printf_Str(uint8_t* ptr)
  7 {
  8     printf("%s", ptr);
  9 }
10
11 int main(void)
12 {
13     uint8_t buf[10]="hello!";
14      Printf_Str("helloworld");//正常使用是这样
15      Printf_Str("hello""world");//拆成这样
16      Printf_Str("hello" STR);//用宏
15 }
上面程序里执行结果都是一样的,没想到调用Printf_Str传入的字符串竟然拆成两部分也可以使用,我之前还真是不知道,看来C语言还是学的不够深呐!

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

14

主题

204

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2443
金钱
2443
注册时间
2017-9-13
在线时间
559 小时
发表于 2019-8-5 11:05:27 | 显示全部楼层
#define A B 是预编译宏,在预编译的时候用B将A替换掉,是纯粹的替换

对于你的代码

#define STR      "World"
Printf_Str("hello""World");//拆成这样
Printf_Str("hello" STR);//用宏

效果是一样的
回复 支持 反对

使用道具 举报

4

主题

48

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
205
金钱
205
注册时间
2019-6-15
在线时间
36 小时
 楼主| 发表于 2019-8-5 13:42:32 | 显示全部楼层
HCHDaLeiGe 发表于 2019-8-5 11:05
#define A B 是预编译宏,在预编译的时候用B将A替换掉,是纯粹的替换

对于你的代码

嗯,是的,Printf_Str("hello""World");我一开始是一直觉得这句写错了,在这之前没见过字符串这么用的,后面我测试一下竟然可以。
回复 支持 反对

使用道具 举报

0

主题

131

帖子

0

精华

初级会员

Rank: 2

积分
175
金钱
175
注册时间
2019-7-1
在线时间
6 小时
发表于 2019-8-5 14:00:45 | 显示全部楼层
谢谢楼主分享
IIS7站长  http://www.iis7.com/
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-15 20:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表