C语言笔记(4)数据类型与数据存放

#include <stdio.h>
int n = 50;
int main()
{
	int a = 10;
	float b = 10;
	char c = '10';
	double d = 10;
	printf("a=%d,b=%f;c=%c,d=%lf,n=%d", a, b, c, d, n);
	return 0;
}

运行结果:a=10,b=10.000000;c=0,d=10.000000,n=50

上述程序中变量分为两大类:

1.int n = 50;被称为程序中的全局变量,因为它不在函数体内。

全局变量的特点是作用于整个程序。

2.函数体{ }之中的a b c d被称为局部变量,它们都是在函数main()中。

局部变量的特点是进函数体生成,出函数体销毁。

程序中的int float char double称为数据类型,是C语言中标识变量的指令,有了这些指令机器就知道该给这个变量分配几个字节,存在哪个区域。

一.C数据类型定义:用于声明不同类型的变量或函数的一个广泛的系统。变量的类型决定了变量存储占用的空间,以及如何解释存储的位模式。

1.数据类型分类:

(1)基本数据类型(也叫做算术类型):int, char, float,double

  (2)枚举类型:也是算术类型,用来定义离散整数值变量,用到关键词enum

(3)void类型

(4)派生类型:包括数组类型、指针类型、结构体类型

2.基本类型书写:

以0开头为8进制,如045,021.

以ob开头为2进制,如ob1101101

以0x开头为16进制,如0x21458adf

二.C语言经过编译后将内存分为以下几个区域:

(1)栈(stack)区:由编译器进行管理,自动分配和释放,存放函数调用过程中的各种参数、既不变量、返回值以及函数返回地址。操作方式类似数据结构中的栈。

(2)堆(heap)区:用于程序动态申请分配和释放空间。C语言中的malloc和free,C++中的new和delete均是在堆中进行的。正常情况下,若程序员没有释放空间,则程序结束时系统自动回收。

注意:此处堆并非数据结构中的堆。 

(3)静态(全局)存储区:分为DATA段和BBS段。

DATA段(全局初始化区)存放初始化的全局变量和静态变量;

BBS段(全局未初始化区)存放未初始化的全局变量和静态变量。程序运行结束时自动释放。

其中BBS段在程序执行之前会被系统自动清0,所以未初始化的全局变量和静态变量在成句执行之前已为0.

(4)文字常量区:存放常量字符串。程序结束后由系统释放。

(5)程序代码区:存放程序的二进制代码。

(6)数据区:存放已初始化的全局变量、静态变量(全局和局部)、常量数据。

显然,C语言中的全局变量和局部变量在内存中是有区别的。C语言中的全局变量包括外部变量和静态变量,都是保存在全局存储区中,占有永久性的存储单元局部变量,即自动变量,保存在栈中,只有在所在函数被调用时才由系统动态在栈中分配临时性单元。

总结来说,局部和外部变量放在静态区,局部变量放在栈区。

可执行文件加载进内存后形成的进程在内存中的结构:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

千度vea

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值