野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 592|回复: 7

C语言知识

[复制链接]
发表于 2019-9-3 19:26:51 | 显示全部楼层 |阅读模式
本帖最后由 旭旭重生 于 2019-9-4 11:13 编辑

希望大佬能帮忙解答下疑惑,以前没遇到过这个
有人能帮忙解释下这里语法吗

QQ图片20190904111234.png
回复

使用道具 举报

发表于 2019-9-3 23:34:00 | 显示全部楼层
什么?
回复

使用道具 举报

 楼主| 发表于 2019-9-4 11:30:43 | 显示全部楼层

第一次发上来的帖子里的图片没显示出来
回复 支持 反对

使用道具 举报

发表于 2019-9-4 17:43:29 | 显示全部楼层
第一个框了   定义一个char 类型的指针变量
下面 把char 类型的指针变量强制类型转换成 uint32_t类型的指针变量
最后printf格式化输出 把 r_char这个指针变量指向的内容以字符串的格式输出
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2019-9-4 18:40:04 | 显示全部楼层
wwhh 发表于 2019-9-4 17:43
第一个框了   定义一个char 类型的指针变量
下面 把char 类型的指针变量强制类型转换成 uint32_t类型的指 ...

感谢你的回答。我还是有疑问。第一个已经定义好r_char为指针变量了,已经是地址,但是第二个在强制进行类型转换的时候在r_char前加了一个&,&不是取指针变量的地址嘛,已经是地址了,怎么又取地址了,一般是这样int a= 20;&a 这种取地址我能理解。第三个框我的疑问是,要取出地址里的值,采用的是这样如 int a = 20; int  * p= &a; printf("%d",*a);这样的方法。但是它这里是直接输出r_char 它代表的不是地址嘛
回复 支持 反对

使用道具 举报

发表于 2019-9-5 09:59:34 | 显示全部楼层
旭旭重生 发表于 2019-9-4 18:40
感谢你的回答。我还是有疑问。第一个已经定义好r_char为指针变量了,已经是地址,但是第二个在强制进行类 ...

不好意思  中间那个看错了 那个是对指针变量的地址强制类型转换(实际上这一步应该是起个保险作用,因为它的地址本来就是32位的地址值,个人理解)
最后这个是对r_char的内容打印,这个应该是跟%s有关,%s这个是以字符串的格式输出,所以他输出的内容是r_char的字符串内容而不是地址 如果是%x的话应该是地址
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-5 11:10:24 | 显示全部楼层
wwhh 发表于 2019-9-5 09:59
不好意思  中间那个看错了 那个是对指针变量的地址强制类型转换(实际上这一步应该是起个保险作用,因为 ...

谢谢,第三个理解了,但是第二个还是有点没理解,我代码里测试了下,如果去掉r_char前面的&,会出现警告,提示类型不匹配
回复 支持 反对

使用道具 举报

发表于 2019-9-5 11:16:52 | 显示全部楼层
旭旭重生 发表于 2019-9-5 11:10
谢谢,第三个理解了,但是第二个还是有点没理解,我代码里测试了下,如果去掉r_char前面的&,会出现警告 ...

那是跟它上面两行的那个函数的参数类型有关
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|站点地图|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号-2 ) 大学生ARM嵌入式2群

GMT+8, 2020-8-5 03:35 , Processed in 0.161562 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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