数据类型可理解为创建变量的模具(模子);是固定内存大小的别名。

数据类型的作用:编译器预算对象(变量)分配的内存空间大小。

既能读又能写的内存对象,称为变量;若一旦初始化后不能修改的对象则称为常量。

变量本质:(一段连续)内存空间的别名。

内存四区

栈区(stack):也叫临时区,由编译器自动分配释放,存放函数的参数值,局部变量的值等。

堆区(heap):一般由程序员分配释放(动态内存申请与释放),若程序员不释放,程序结束时可能由操作系统回收。

全局区(静态区)(static):全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域,该区域在程序结束后由操作系统释放。

常量区:字符串常量和其他常量的存储位置,程序结束后由操作系统释放

程序代码区:存放函数体的二进制代码。

函数调用模型

函数1调用函数2,函数1称为主调函数函数2称为被调用函数。

Main(主调函数)分配的内存(在堆区,栈区、全局区)都可以在被调用函数里使用。

C/C++可以在临时区分配内存,但是用完后被系统清了。

如果在被调用函数里面的临时区(栈)分配内存,主调用函数是不能使用的。

要弄清是主调函数分配内存,还是被调用函数分配内存。

主调函数如何使用被调用函数分配的内存(技术关键点:指针做函数参数)。

Heap、stack生长方向和内存存放方向是两个不同概念。

指针

1指针也是一种变量,占有内存空间,用来保存内存地址

2在指针声明时,*号表示所声明的变量为指针

在指针使用时,*号表示 操作 指针所指向的内存空间中的值

*p相当于通过地址(p变量的值)找到一块内存;然后操作内存

*p放在等号的左边赋值(给内存赋值)

*p放在等号的右边取值(从内存获取值)

3指针变量和它指向的内存块是两个不同的概念

含义1  给p赋值p=0x1111; 只会改变指针变量值,不会改变所指的内容;p = p +1;

含义2  给*p赋值*p='a'; 不会改变指针变量的值,只会改变所指的内存块的值

含义3  =左边*p 表示 给内存赋值,=右边*p 表示取值 含义不同

4指针是一种数据类型,是指它指向的内存空间的数据类型

含义1:指针步长(p++),根据所致内存空间的数据类型来确定

结论:指针的步长,根据所指内存空间类型来定。

以上为个人理解总结,转载请注明出处!

深入理解数据类型、变量类型属性、内存四区和指针相关推荐

  1. C语言数据类型 / 变量类型 - C语言零基础入门教程

    目录 一.C 语言数据类型分类 二.C 语言整形 1.无符号整形(16 位系统) 2.有符号整形(16 位系统) 3.int 和 long 区别 4.超出取值范围的整形 三.C 语言浮点型 float ...

  2. 内存四区 malloc/free与new/delete的区别

    前言 之前写了一篇关于<快速排序的4种优化>的博文,当时在验证各种情况的时候忽略内存分配的问题,导致所得到的结果分析的不全面.因为在刚开始写程序的时候将数组声明在 main() 里面,这样 ...

  3. c/c++教程 - 2.1 程序的内存模型 内存四区 代码区 全局区 堆区 栈区 new操作符

    第2章为C++核心编程. 本阶段主要针对C++面向对象编程做详细讲解. 目录 1.内存分区模型 1.1 程序运行前(代码区.全局区) 1.2 程序运行后:(栈区.堆区) 1.3 new操作符(堆区内存 ...

  4. 内存四区(代码区 静态区 栈区 堆区)

    参考:内存四区(代码区 静态区 栈区 堆区) 作者:今天天气眞好 发布时间: 2021-04-01 18:09:13 网址:https://blog.csdn.net/qq_51118175/arti ...

  5. C 进阶内存四区(3)

    1 内存四区的建立流程 流程说明 1.操作系统把物理硬盘代码load到内存 2.操作系统把c代码分成四个区 3.操作系统找到main函数入口执行 2 内存四区模型和函数调用模型变量传递分析 1.一个主 ...

  6. 【C 语言】内存四区原理 ( 内存四区建立流程 )

    文章目录 一.内存四区建立流程 一.内存四区建立流程 内存四区 建立流程 : 1. 加载代码到内存 : 操作系统 中 执行 可执行程序 , 将 存放在硬盘中的 可执行程序 ( 包含代码 ) 加载到内存 ...

  7. C/C++之内存四区

    程序运行时,将内存大致分为四个区域 代码区:存放函数体的二进制代码,由操作系统进行管理的: 全局区:存放 全局变量和 静态变量以及 常量: 栈区:由编译器自动分配释放,存放函数的参数值,局部变量等: ...

  8. alin的学习之路:C语言篇(一)(内存四区模型,宏函数,调用惯例,内存存储方式)

    @TOC(内存四区模型,宏函数,调用惯例,内存存储方式) 1. 内存四区及其使用注意 内存四区:代码区,全局静态区,栈区,堆区 代码区 代码区存放的是CPU执行的二进制指令 特点: 只读 共享 栈区 ...

  9. c/c++的内存四区

    内存四区的图示 内存四区的代码案例 #include <stdio.h> void fun() {static int k = 10; //初始化的静态局部变量(data区的rw段)sta ...

最新文章

  1. C#发现之旅第一讲 C#-XML开发
  2. 独家 | 全面!手把手教你决策树可视化(附链接代码)
  3. 02.字符串常量池 ? class常量池? 运行时常量池?
  4. css居中的几种方法_CSS布局中的水平居中的方法
  5. 栈的pop和peek_从堆栈中移除项目,而不使用pop、peek、push
  6. 大数据之-Hadoop本地模式_WordCount官方案例---大数据之hadoop工作笔记0022
  7. winpythonhadoop_win10下配置hadoop2.9(使用python单机运行任务)
  8. paip.提升用户体验---网站导航栏的设计
  9. urlrewrite 规则报错
  10. dingo php,laravel 使用dingo 和 jwt 【laravel7.3 dingo3.0 php7.3】配置
  11. 生成图片滑动验证码图片
  12. Re: 酷似抓虾的ruby on rail网站-猫爪
  13. 心胸决定境界,心态决定命运
  14. python之pyecharts画图
  15. 2019考研 报名条件是什么?
  16. 聊一聊AI发展的过去现在与未来-由OpenAI之ChatGPT想到的
  17. IE去除“是否停止运行此脚本?此页面上的脚本造成Internet Explore运行速度减慢”的提示信息
  18. 张可可捉到“菜霸” 黑客竟是16岁失学少年
  19. group by详解
  20. 【零信任落地案例】陆军军医大学第一附属医院零信任安全架构主要构成

热门文章

  1. Tarjan点的双联通(寻找割点)
  2. [bug解决] IndentationError unindent does not match any outer indentation level
  3. [高光谱] (6w字巨详细) GitHub开源项目Hyperspectral-Classification的解析
  4. python机器学习案例系列教程——算法总结
  5. 如何解决Ubuntu桥接模式无法联网
  6. WPF内嵌WCF服务对外提供接口
  7. @Autowired @Qualifier
  8. CCF - 201412-1 - 门禁系统
  9. LeetCode——Maximum Depth of Binary Tree
  10. 课堂练习--最大子数组和