C语言中关于哪些数据放在哪些区?

原创 2015年07月09日 18:51:39

上图是用手机拍摄的Unix环境高级编程中第二版中第七章的内容。

一个程序分为几个区,可以从图中明显看到。需要说明的是,stack区是从第1GByte地址处以下开始,第1GByte地址处到stack开始的地方,是命令行参数和环境列表的存储区。

需要解释的是,初始化数据区和非初始化数据区,两者在其他的书中都称为数据区,data区。其中,程序中的已经初始化的数据区里面又含有多种类型的数据存放。比如静态变量存储区static ,全局变量存储区global, 字符串区 等等。

关于字符串的不同存储方式,请参考下面的一个连接:

http://www.geeksforgeeks.org/storage-for-strings-in-c/

如果在一个函数中,char str[] = "ABCD"; 那么,str是放在函数的栈空间中的,字符串"ABCD"也是放在栈空间中的。

如果在一个函数中,char *str = "ABCD";  那么,str是放在栈空间中的,而字符串是放在data区的read-only部分。

如果在一个函数中,char *str = (char *)malloc(sizeof(char)*size);  *(str+0) = 'A'; ... 那么,str是放在栈空间中的,而字符串是放在堆空间中的。

Note that: 第二种的字符串是不可以更改的!

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

C语言(9)--获得缓存区中的输入数据、趣味转义字符

1、获得缓存区中的输入数据2、趣味转义字符

C语言拾遗:数据区,代码区,堆区,栈区

转自:http://blog.csdn.net/yinwei520/article/details/6006054 一般全局变量存放在数据区,局部变量存放在栈区,  动态变量存放在...

学习笔记------数据结构(C语言版)数组之三元组顺序表

//TSMatrix.cpp #include"predefined.h" #include"TSMatrix.h" Status TransposeSMatrix(TSMatrix M,TSMa...

C语言——各种数据类型

首先,我们要知道计算机计算机中存储的数据分为静态数据和动态数据 一、数据分类 ①静态数据:一般我们说的“我的硬盘有500G”,那就是静态数据住的房子了,并且就是断电后也能永久性的存在,除非你主动删...

C语言中的类型转换与数据的机器码存储

各种类型的表示范围 对于涉及到了混合着不同数据类型的表达式中的数据类型的转换问题。在总结转换问题之前,先说明一下32位机上的各种数据类型。 类型名 字节数 ...

C语言:从文本文件中读取输入数据

C语言:从文本文件中读取输入数据标签: C语言 文本文件 输入数据by 小威威我们经常通过输入测试数据来调试我们程序:一般都是直接运行程序然后再人为的输入。这样做其实是非常笨的,尤其是在测试数据较多的...
  • linwh8
  • linwh8
  • 2016-01-07 16:01
  • 3121

C语言中强制数据类型转换的总结

● 字符型变量的值实质上是一个8位的整数值,因此取值范围一般是-128~127,char型变量也可以加修饰符unsigned,则unsigned char 型变量的取值范围是0~255(有些机器把ch...

《数据结构和算法分析—C语言描述》读书笔记

第一章主要讲的是数学知识的复习,指数,级数什么的,最后,浅层次的谈了一下递归。   当一个函数用它自己来定义时就称为是递归(recursive)的,C语言是允许递归的。但重要的是要记住,C提供的仅仅...

C语言几种常见数据类型的范围

转自:http://blog.csdn.NET/mafuli007/article/details/7325510 速查表: char -128 ~ +127 (1 Byte) sh...

C语言基础(一)编译、数据类型、注释、代码块

1、写代码注意事项:      (1)不要忘记导入头文件 #include      (2)main函数有且只有一个      (3)写完一行代...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)