c-note:字符串常量初始化存放位置

news2024/11/25 0:37:22

两行代码,分别以数组形式和指针形式,先说结论。
对于字面量"he"的存放位置:
1、数组形式,字面量直接存放进栈给temp处开辟的空间
2、指针形式,字面量"he"是一个常量,在编译之初便存在于静态存储区。对于指针形式的那个字符串"he"其实是一个地址。

void square() {
  char temp[]="he";
  char* temp2="he";
}

实验1:较短的字符串常量初始化char[]

结论:mov语句可以看出是直接赋值,如果将字符换成"h",可以更清楚的看出赋值的是104(ASCII码)
请添加图片描述
请添加图片描述


实验2:将用于数组形式初始化的字符串增长,使用到了movabs,更加确认是直接赋值的(自行检索movabs的作用)

请添加图片描述请添加图片描述


实验3:同时进行初始化,可以看出使用指针的形式,使用的字符串是一个在编译存放在静态区的数据,字符串即地址名

请添加图片描述
请添加图片描述
结论:其实挺好理解的,既然数组空间都开辟好了,直接将值放入就可以了。就是你有了容器,直接放元素就好。
对于指针只能存放地址,不能存放你想要的数据,所以需要从其他的地方开辟内存存放。
对于字符串常量,常量肯定是希望复用的,所以编译后就直接存放静态区了(对比java静态常量池)。c中有讲过,指针形式使用字符串,其实是开辟了一个字符数组来存放字符串,然后放回地址,即字符串等价于地址。

用js的arrow function做个简单解释
“string template=>{char str[]=“string template;return str}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/168283.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何在mac上使用idea做大数据开发

1 软件包下载jdk1.8 (jdk1.8.0_231)idea(包括2018,2019) (ideaIC-2019.3.3/ideaIC-2018.3.5)汉化包:汉化包.rarmaven3.6.3 (apache-maven-3.6)2 jdk的安装第一:把包直接放到自定义目录下第二:配置环境变量a) 打开终端 输入 sudo vi /etc/profile 或者 sudo vi .bash_profile解释…

联合证券|滴滴出行即日起恢复!A股嗨了!券商扛起领涨大旗

A股今天全线走高,沪指涨超1%克复3200点,深成指、创业板指盘中涨超2%;港股午后回落走低,恒生科技指数一度跌超2%。 详细来看,A股方面,两市股指盘中强势拉升,沪指涨超1%站稳3200点,深成…

『速查手册』MIME 多用途互联网邮件扩展

『速查手册』MIME 多用途互联网邮件扩展 文章目录『速查手册』MIME 多用途互联网邮件扩展一、多用途互联网邮件扩展 / 互联网媒体类型二、MIME 命名规则😎三、MIME 类型列表🍉1)、Type 类型形式2)、Application 应用文件3)、Text 文本4)、Video 视频文件…

elasticsearch(三)-- 理解ES的索引操作

一、前言 上一章我们主要学习了es的几个客户端,那么我们后面也主要通过kibana客户端、HighLevelClient高级客户端这两个来学习es. 这一章的学习我们主要是学习一些Elasticsearch的基础操作,主要是深入一些概念,比如索引的具体操作&#xff0…

三、WEB框架介绍以及设计模式

web框架介绍 什么是web框架 应该叫web应用框架(web application framework),它是一种开发框架。 通俗点来讲,就是用来开发web应用的程序。 为什么要使用框架来开发 互联网行业流行一句话叫“不要重复造轮子”,特别是对于新手和应用层开发…

day22-JDK新特性

接口中的新特性 接口我们之前已经学过了,那么接口中内部主要就是封装了方法,包含抽象方法(JDK 7及以前),默认方法和静态方法(JDK 8),私有方法 (JDK 9)。 接口…

使用Navicat导入和导出sql语句

创建mysql数据库 创建数据库之前,肯定要先连接上数据库,如果不知道怎么使用navicat连接mysql数据库,可以参考之前的文章哦 https://blog.csdn.net/weixin_43860634/article/details/128716733 接下来进入正题 1、首先要双击test &#xff0…

命令注入与dvwa中的Command Injection

一、什么是命令注入?即 Command Injection,是指通过提交恶意构造的参数破坏命令语句结构,从而达到执行恶意命令的目的。此攻击与代码注入不同,因为代码注入允许攻击者添加自己的代码,然后由应用程序执行。 在命令注入中…

用队列实现栈

题目:225. 用队列实现栈 - 力扣(LeetCode)准备工作这题明确说明了需要用队列来实现栈,介于C语言没有队列的库,所以在此之前我们需要用调用之前学的队列,详见队列typedef int QDataType;typedef struct Queu…

Ubuntu上安装 Hadoop 3详细过程(验证+填坑总结)

Ubuntu上安装 Hadoop 3 前提条件: Python 推荐3.8JDK 推荐1.8 解压安装 sudo tar -zxvf hadoop-3.3.0.tar.gz -C /usr/local cd /usr/local sudo mv hadoop-3.3.0 hadoop sudo chown -R hadoop ./hadoop 配置环境变量 vim ~/.bashrc # hadoop export H…

云原生安全系列 5:ETCD 安全加固

引言 etcd是一个强一致性的分布式键值存储,它提供了一种可靠的方式来存储需要被分布式系统或机器集群访问的数据。通过 raft 算法它能在网络分区期间优雅地处理领导者的选举,并能容忍机器故障,甚至在领导者节点上。除此之外, etc…

存储过程的基础知识

本文来简单说下存储过程的基础知识 文章目录概述什么是存储过程存储过程的优缺点概述 mysql官网提供的储存过程:https://www.mysqlzh.com/doc/225/499.html 什么是存储过程 简单的说,存储过程是一条或者多条SQL语句的集合,可视为批文件&…

Windows下更改yarn的安装位置,减小C盘占用

Windows下更改yarn的安装位置,减小C盘占用 绷不住了,yarn的C盘占用太高了,我这C盘感觉以后会受不了,太大了~~(捂脸~~ nnd,撸他,更改yarn的位置开始! 先看看yarn目前的位置 检查当前…

「自控原理」2.4 信号流图与梅逊公式、闭环传递函数

本节引入了信号流图以及梅逊增益公式,可以据此快速对系统进行化简 本节引入了闭环传递函数的概念,并介绍了常用的闭环传递函数 文章目录信号流图的基本概念信号流图与方框图的关系从结构图绘制信号流图从信号流图绘制结构图梅逊(Mason)增益公式Mason公式…

Workfine5.0扩展功能——如何识别身份证信息?

哈喽,我是办公助手小W,又到了跟大家分享办公小技巧的时候啦! 最近Workfine5.0最新版本上线后,大家最感兴趣的就是它的扩展功能了,今天要跟大家分享的就是如何实现身份证信息的提取。 首先咱们先要知道如何下载安装扩…

(第五章)OpenGL超级宝典学习:缓冲

缓冲 前言 本篇在讲什么 关于OpenGL数据缓冲的相关内容 本篇适合什么 适合初学OpenGL的小白 想了解OpenGL缓冲对象的同学 本篇需要什么 对C语法有简单认知 对OpenGL有简单认知 最好是有OpenGL超级宝典蓝宝书 依赖Visual Studio编辑器 本篇的特色 具有全流程的图文…

使用OpenCV透视变换技术实现坐标变换实践

1. 概述 1.1. 需求 在局部空间(无GPS定位)视频监控过程中,把视频识别到物体位置,投射到空间平面坐标系中,获取物体在局部空间的平面坐标。 1.2. 解决方案 使用图像透视变换技术。 1.3. 透视变换概念 透视变换是指…

链路追踪组件Skywalking使用

前言Skywalking是一个国产开源框架,2015年由吴晟开源 , 2017年加入Apache孵化器,其用于追踪多微服务模块调用之间日志的追踪,协助程序员进行排除问题Skywalking架构Skywalking架构图大概如下SkyWalking OAP: SkyWalkin…

如何格式化U盘?以及优盘格式化的恢复方法

我们经常使用U盘来进行存储和传输数据,使用时间久了,可能需要我们进行优盘格式化。需要注意!优盘格式化之前,记得对里面的数据进行备份,防止数据清空造成不必要的损失。 如何进行U盘格式化?格式化优盘后&a…

“深度学习”学习日记。误差反向传播法--加法层、乘法层、激活函数层的实现

2023.1.16 1、加法层、乘法层: 前两篇文章都在讲述理论,今天实现代码操作:关于加法节点,乘法节点的内容在这篇文章。 https://blog.csdn.net/m0_72675651/article/details/128695488 在以后的学习中,将把构建神经网…