首页 > 生活 > 娱乐

gcc常用参数及功能(DG数据圈聊ROS2Humble)

时间:2023-01-21 20:09:09 作者: 阅读:0

gcc常用参数及功能(DG数据圈聊ROS2Humble)(1)

了解最新动态,请关注我的头条号: DG数据圈

指针,英文是pointer。

根据剑桥在线英语词典,pointer的本意如下:

something that is used for pointing at things, such as a long, thin stick that you hold to direct attention to a place on a map or words on a board, or a cursor.

直译过来就是:

用于指向事物的东西,例如一根细长的棍子,用于将注意力引导到地图上的某个地方或板上的文字,或光标。


我们以字符串为例,来介绍C里面指针的概念。

本文主要包括以下几个部分:

1 ASCII 表: 找出"hello"对应的十六进制, 十进制以及二进制表示

C语言里,字符的类型,可以通过Char来定义 (unsigned char这里不做讨论先)。

比如这段代码运行的结果是输出"h":

#include <stdio.h> int main(void) { char example = 'h'; printf("%c", example); return 0; }

在内存中, char类型的数据,即字符,是通过对照ASCII表后,以二进制的形式保存的。

ASCII表如下:

gcc常用参数及功能(DG数据圈聊ROS2Humble)(2)

Source: en.cppreference.com

我们可以找到字母'h'以及'hello'对应的十六进制以及十进制表示, 比如:

Char: h十六进制(hex): 68十进制(dec): 104

通过换算,我们知道104的二进制表示是: 01101000。也就是说,在内存中,'h'是通过01101000来表示的。每一个0以及1是由通电状态下晶体管以及电容器的状态决定。这里也不展开说,就上个电路图先:

gcc常用参数及功能(DG数据圈聊ROS2Humble)(3)

Source: wiki

2 Debug: "hello"字符串在内存中的存储

在CLION中Debug,我们会看到'hello'在内存中的储存情况,最后面还多用了一位,储存'\0',Debug中显示的是字符在ASCII表中对应的十进制数字, 这也是为了方便理解做出的显示,不管Debug用几进制显示,对应的二进制都是一样的。比如'h'对应的是十进制是104。

#include <stdio.h> int main(void) { char hi[] = "hello"; printf("%s\n", hi); printf("%p\n", &hi); return 0; }

gcc常用参数及功能(DG数据圈聊ROS2Humble)(4)

字符串 "hello" - 储存

3 Debug: "hello"字符串对应的内存地址

'hello'对应的十六进制如下:

字符串: hello

十六进制: 68 65 6c 6c 6f

CLION在debug时,提供一个Memory View面板, 将内存中的二进制转换为十六进制后展现出来,应该是为了方便查看等原因这么做的。

我们通过它查看内存中字符串"hello"的地址及十六进制展现,它对应的地址是0x7ffee5047ae6(如下图。注:在不同电脑上运行,这个值会不一样),对应的值是68 65 6c 6c 6f。 这个地址(0x7ffee5047ae6)是'h'对应的地址,也用来代表整个字符串"hello"的地址。

如果你使用下面代码,则会输出"e"对应的地址, 比如为0x7ffee89a8af7, 也就是紧接着"h"的地址(0x7ffee5047ae6)后面。

printf("%p\n", &hi[1]);

gcc常用参数及功能(DG数据圈聊ROS2Humble)(5)

下图我们可以看到程序运行完后的输出,也可以理解到,C语言的指针,是用来存放地址的。

这里打印指针的值, 即"hello"对应的内存地址,是通过使用地址运算符&以及格式说明符%p实现的:

printf("%p\n", &hi);

gcc常用参数及功能(DG数据圈聊ROS2Humble)(6)

字符串hello - 输出内存地址

这次就介绍到这里,喜欢的欢迎点赞,关注。

本文作者:头条号DG数据圈,公众号德国数据圈

参考资料

https://dictionary.cambridge.org/dictionary/english/pointer

https://en.cppreference.com/w/cpp/language/ascii

https://www.rapidtables.com/convert/number/binary-to-decimal.html

https://en.wikipedia.org/wiki/Random-access_memory

,

图文新闻

相关文章

热门资讯

评论

1111111

更多推荐

电脑比较好的抠图软件(又是截图软件又是抠图软件)
电脑比较好的抠图软件(又是截图软件又是抠图软件)

今日干货请查收:office软件的实用功能 既然用了office,就把它的用处发挥到极致!能在一个软件里面实现的,绝不切换到第二个

2023-01-21
win10软件闪退怎么解决(modern应用闪退解决步骤)
win10软件闪退怎么解决(modern应用闪退解决步骤)

 win10系统用户反馈modern应用老是会闪退,接下来给大家分享win10 modern应用闪退解决步骤。   1、搜索框输入powershell,点

2023-01-21
如何安装windows纯净版系统(峰哥教你如何给windows系统重装纯净版)
如何安装windows纯净版系统(峰哥教你如何给windows系统重装纯净版)

如何系统重装纯净版呢?现在我们都拥有一台电脑啦,那么电脑系统出现毛病的时候,例如电脑系统崩溃或者经常蓝屏,那么就可以进行重装电

2023-01-21
荣耀magic2的附加功能(荣耀Magic2推送系统更新)
荣耀magic2的附加功能(荣耀Magic2推送系统更新)

IT之家3月27日消息 荣耀Magic2近日推送了9.0.0.182的系统更新,其中系统内置音乐得到了更新,同时也合入了3月最新的谷歌安全补丁。

2023-01-21
剪辑怎么添加移动的马赛克(几个步骤就能添加马赛克并裁剪画面)
剪辑怎么添加移动的马赛克(几个步骤就能添加马赛克并裁剪画面)

很多剪辑视频的朋友们都会遇到想要给和视频添加马赛克并且裁剪画面的剪辑情况,但是不知道什么方法好操作,所以小编今天就要给大家

2023-01-21
gcc常用参数及功能(DG数据圈聊ROS2Humble)
gcc常用参数及功能(DG数据圈聊ROS2Humble)

了解最新动态,请关注我的头条号: DG数据圈 指针,英文是pointer。 根据剑桥在线英语词典,pointer的本意如下: some

2023-01-21
windowsvista寿命多少年(穿越时间欣赏绝美Windows)
windowsvista寿命多少年(穿越时间欣赏绝美Windows)

跟我一起,穿越时间! 早期微软对Windows系统的安装过程十分用心,安装时均会以幻灯片的形式展示新系统的特性和优势,对于颜值最高

2023-01-21
嘉铁城有《卡班瑞》第二季吗?它什么时候会出来?
嘉铁城有《卡班瑞》第二季吗?它什么时候会出来?

关于嘉铁城有《卡班瑞》第二季吗?它什么时候会出来?这个很多人还不知道,今天小六来为大家解答以上的问题,现在让我们一起来看看吧!1、.

2023-01-20
谁杀了张宗昌(谁杀了小红帽)
谁杀了张宗昌(谁杀了小红帽)

关于谁杀了张宗昌,谁杀了小红帽这个很多人还不知道,今天小六来为大家解答以上的问题,现在让我们一起来看看吧!1、影片的结尾那老头的

2023-01-20
土电话的制作过程视频(土电话的制作过程)
土电话的制作过程视频(土电话的制作过程)

关于土电话的制作过程视频,土电话的制作过程这个很多人还不知道,今天小六来为大家解答以上的问题,现在让我们一起来看看吧!1、制作土

2023-01-20
返回顶部