c语言向文件中写入字符串_C语言中定义字符串的两种方式及其比较

f442b7b72c1ddeee0f1c4568186e6833.png

先看如下代码:

20f087bee32e9f4b19740bdb0bd384ca.png

以上用两种方式定义一个字符串:

1、定义一个char * 类型指针,指向字符串首字符首地址。

2、定义一个数组,数组里存放元素为字符串各个字符+'0',其中'0'为码0值,编译器会自动在字符串的末尾添加此值。

先看这两个"变量"分别是存在内存的哪个区域,(后面可知string1为常量)修改代码如下,打印这两个“变量”的内存地址,查看运行结果:

633f2c03bafc85707fe902ef0ddcbff7.png

查看进程的内存分布情况,(详情请查看:RobotCode俱乐部:手撕虚拟内存(1)——字符串在虚拟内存中的段位置与/proc虚拟文件系统),string1内存首地址为0x80485a0,string2内存首地址为0bfaebfd8。如下图,可知这两种定义方式,一种位于只读区(0x8048000 < 0x80485a0 < 0x8049000),一种位于Stack区(0xbfacd000 < 0bfaebfd8 < 0xbfaee000)。可知,string1为常量(只读的,权限为r),在编译时就确定了。string2存放在栈上,运行时确定。这也决定了,定义string1的方式适用于定义字符串常量,string2方式适用于字符串变量可能需要被修改的情况。同时需要注意的是,未必定义在函数体里的“变量”都会分布在栈上,如这里的字符串常量,及static修饰的局部变量,他们都是分布在全局静态区,由编译器在编译时决定,而非函数运行时动态分配。另外全局静态区的变量生命期与整个进程的生命期相同,大于等于函数的生命期。

e5c29a07abe6b07afd0e47bf795b0a34.png

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

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

相关文章

define 字符串_C++如何使用define关键字以便使用中文编程?

先上代码&#xff1a;#include <iostream> #define 使用 using #define 整型 int #define 浮点 double #define 命名空间 namespace #define IO流 std #define 输出文本 cout #define 输入文本 cin #define 换行 endl #define 输出流 << #define 输入流 >> #…

JavaScript和ASP.NET的传值

因项目需要&#xff0c;最近一段时间里对于js的开发有了一定的了解。在基于ASP.NET的开发中&#xff0c;经常性的需要JS脚本来增加一些客户端的控制&#xff0c;比如限制输入字符&#xff0c;日期控件等等。一般这样的控制基本上在客户端完成就比较好&#xff0c;无需回传到服务…

前端学习(2879)歌谣学习篇原生js和canvas实现弹幕功能

我是歌谣 放弃很难 坚持一定很酷 2021继续加油 目录结构 文件地址 源码地址后面可见 源码文件 index.css body { margin: 0; } .container { width: 1000px; margin: 0 auto; } .video-wrapper { position: relative; } .video-wrapper video { width: 100%; } .video…

ThreadLocal系列(二)-InheritableThreadLocal的使用及原理解析

ThreadLocal系列之InheritableThreadLocal的使用及原理解析&#xff08;源码基于java8&#xff09; 上一篇&#xff1a;ThreadLocal系列&#xff08;一&#xff09;-ThreadLocal的使用及原理解析 下一篇&#xff1a;ThreadLocal系列&#xff08;三&#xff09;-TransmittableTh…

oracle数据库跟mysql的区别_关于Oracle数据库与MySQL数据库的几点区别

Oracle数据库与MySQL数据库的区别是本文我们主要要介绍的内容&#xff0c;接下来我们就开始介绍这部分内容&#xff0c;希望能够对您有所帮助。Oracle与MySQL的区别&#xff1a;1.在Oracle中用select * from all_users显示所有的用户&#xff0c;而在MYSQL中显示所有数据库的命…

年轻讨厌而又美丽可爱的城市

年轻讨厌而又美丽可爱的城市&#xff0d;&#xff0d;深圳。上海是什么样的&#xff1f;真要去看看。一只乌鸦坐在高高的树枝上&#xff0c;一只兔子看见后就问它&#xff1a;“我可以像你一样 坐着不动吗&#xff1f;”乌鸦说&#xff1a;“当然可以。”于是兔子便坐在树底下。…

汤姆逊灯

由 MIT (Massachusetts Institute of Technology) 哲学教授在1954年提出&#xff1a;考虑一盏开关由一个复杂的定时器控制的灯。实验开始时&#xff0c;灯是开着的&#xff0c;并且正好开一分钟。这一分钟结束时定时器把灯关闭&#xff0c;这样持续半分钟。之后&#xff0c;又把…

python def函数_Python教程之Lambda表达式知识概述

在Python中&#xff0c;除了def之外&#xff0c;还提供了一种生成函数对象的表达式形式&#xff0c;即Lambda表达式&#xff0c;它可以创建小的匿名函数&#xff0c;起到一个函数速写的作用。接下来的好程序员Python学习课程就给大家分享Lambda表达式相关的知识点。Lambda表达式…

提示以下的错误信息:“未能在设计视图中打开, 块中,以不同方式将值括起来 ”...

问题搞定&#xff0c;其实这是个string的语法问题&#xff0c;里面和外面的引号不能相同&#xff0c;否则无法识别哪个是右引号的结束点。 举个例子说吧&#xff0c;就想刚才我的 "<%#"list.aspx?typeid"DataBinder.Eval(Container.DataItem,"IDs"…

Markdown简单上手

标题 # 内容 一级标题 二级标题 三级标题 四级标题 五级标题 六级标题 字体 1. 加粗(CtrlB) **加粗** 2. 斜体(CtrlI) *斜体* 3. 斜体加粗(CtrlBI) ***斜体加粗*** 4. 删除线(CtrlT) ~~删除线~~ 加粗斜体斜体加粗删除线 引用 >引用 >>引用 引用 分割线 --- ---- ___ *…

MySQL全文索引模糊查询_mysql全文索引之模糊查询

旧版的MySQL的全文索引只能用在MyISAM表格的char、varchar和text的字段上。不过新版的MySQL5.6.24上InnoDB引擎也加入了全文索引&#xff0c;所以具体信息大家可以随时关注官网&#xff0c;下面我来谈谈mysql全文索引的用法,网上很多啦&#xff0c;我只讲讲我所了解滴部分哈&am…

html中内容超出显示省略号的方法

html中内容超出显示省略号的方法 本博客主要介绍 前端开发中文本过多&#xff0c;以省略号显示。 效果如图&#xff1a; 单行&#xff1a; <!--单行--> <p class"pl">这个属性定义溢出元素内容区的内容会如何处理。如果值为 hidden&#xff0c;当点击hid…

vue 多选自动触发_Vue,初次邂逅(二)

一、前言二、Vue常用指令2.1 什么是指令&#xff1f;指令 (Directives) 是带有 v- 前缀的特殊特性。指令特性的预期值是&#xff1a;单个 JavaScript 表达式。指令的职责是&#xff0c;当表达式的值改变时&#xff0c;将其产生的连带影响&#xff0c;响应式地作用于 DOM。 例如…

string.Empty 和 并不总是可以互换的

在 C# 中&#xff0c;大多数情况下 "" 和 string.Empty 可以互换使用。比如&#xff1a;strings "";strings2 string.Empty;if(s string.Empty) { // }但是我发现有一种情况下只能是用常数形式&#xff1a; "", 而不能使用 string.Empty 这个静…