先看如下代码:

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

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

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

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

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

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

  1. java中byte数组与int类型的转换(两种方式)

    java中byte数组与int类型的转换,在网络编程中这个算法是最基本的算法,我们都知道,在socket传输中,发送.者接收的数据都是 byte数组,但是int类型是4个byte组成的,如何把一个整形 ...

  2. Python自定义类中定义属性的两种方式

    封面图片:<Python程序设计开发宝典>,ISBN:9787302472100,董付国,清华大学出版社 图书详情:https://item.jd.com/12143483.html 京东 ...

  3. Java中的枚举类型与枚举实现接口的两种方式

    枚举的构造 若某事物的取值只有有限个,可以一个个罗列出来,则这个列举出来的类型就叫做枚举类型. (1)使用public static 修饰的方法构造枚举 public class Size {priv ...

  4. shiro中登录的时候url地址栏带jsessionid的两种方式

    1.web.xml web.xml必须为3.0版本 <?xml version="1.0" encoding="UTF-8"?> <web-a ...

  5. Spring框架学习day_02:组件扫描 / 注解内部读解 / 组件扫描中配置作用域和生命周期 / 解耦 / 自动装配(两种方式) / 读取文件

    1. 组件扫描 首先,必须让Spring扫描组件所在的包,并且,组件类的声明之前必须添加@Component注解! 其实,除了@Component注解以外,还可以使用以下注解实现同样的效果: @Con ...

  6. js中定义数组的两种方式

    js中定义数组: 注意事项: 1.在js中定义数组,不用担心数组角标越界的问题,可以自动扩容. 2.在js中,数组是可以定义任何数据类型的. 1.指定数组长度 运行结果: 2.简写方式:

  7. application.yml中定义数组的两种方式

    @Data @Component @ConfigurationProperties(prefix = "send.feishu") public class YmlConfig { ...

  8. html下拉框onchange事件,javascript 中select标签上放入onchange事件的两种方式分享

    摘要: 下文讲述在html标签select上放入onchange事件的方式分享,如下所示: 例1: maomao365.com js select上直接使用onchange的方法 function s ...

  9. html中获取modelandview中的json数据_从Bitmap中获取YUV数据的两种方式

    从Bitmap中我们能获取到的是RGB颜色分量,当需要获取YUV数据的时候,则需要先提取R,G,B分量的值,然后将RGB转化为YUV(根据具体的YUV的排列格式做相应的Y,U,V分量的排列) 所以这篇 ...

最新文章

  1. asp网上书店系统_Asp.net Core启动流程讲解(一)
  2. (转)PHP5使用cookie时报错 cannot modify header information - headers already sent by (......)
  3. python3语法错误-python3中的def函数语法错误
  4. VTK:功能袋图用法实战
  5. 两年前觉得这很难那很难的人,现在觉得更难了
  6. AI芯片格局最全分析
  7. AndroidStudio_开发工具调试入门---Android原生开发工作笔记70
  8. strrev php_PHP使用strrev翻转中文乱码问题的解决方法
  9. 计算机专业必装软件mac,MAC电脑可运行的常用软件有哪些?
  10. 老猿学5G随笔:RAN、RAT以及anchor移动性锚点的概念
  11. Passenger简介
  12. 【Web_接口爬虫_Python3_百度一下_requestjsonetree】百度一下,检索“成都”,爬取标题、内容、链接地址,保存文本_20200301
  13. 解决Linux 负载过高问题过程记录
  14. 并发编程——ConcurrentHashMap#transfer() 扩容逐行分析
  15. rust墙壁升级点什么_明日之后屋子墙壁怎么升级?墙壁升级条件方法一览
  16. Video标签上面覆盖播放按钮点击播放
  17. 前端接收bolb格式下载文件,前端下载blob格式的文件
  18. html5 电影选座位效果,为你的网页做出电影的过场效果
  19. 院士齐聚智造名城 2022全球智博会嘉宾阵容公布
  20. 视频业务基础知识入门

热门文章

  1. [html] 如何给input的右上角加个清除的按钮?
  2. [vue] 说下$attrs和$listeners的使用场景
  3. [css] 你最希望css拥有什么样的特性?(目前没有的)
  4. 工作309:selectaccount方法接收值
  5. 工作277:v-model实战
  6. 前端学习(2629):npm安装成功配置
  7. 前端学习(1892)vue之电商管理系统电商系统之为表格添加索引列
  8. 前端学习(1718):前端系列javascript之生命周期上
  9. 前端学习(1367):什么是中间件
  10. 前端学习(1029):jquery其他方法