嵌入式C语言4.1 C语言内存空间的使用-指针
指针:就是内存资源的地址、门牌号的代名词
假如你所在的城市是一个内存(存储器),如果找到你家,就是通过你的家庭住址(指针)寻找,而你家里的摆设面积之类的就是内存的内容(指针指向的内容)。
指针变量:存放指针这个概念的盒子
c语言编译器对指针这个特殊的概念,有两个疑问?
1. 分配一个盒子,盒子要多大??
在32bit系统中,指针就4个字节
在64bit系统中,指针就8个字节


可以看出一个系统中,所有指针的内存大小是一样的!
2. 盒子里存放的是地址,所指向内存的读取方式是什么?
我们一般看到
int * p //表达的是,指针p,她是以int4个字节的方式读取地址,也就是一次性读取四个字节。
同理 char * p //指针p,一次性读取1个字节。
这个 int * 或者 char * 可以理解为数据模子
指针指向内存空间,一定要保证合法性。


嵌入式C语言4.1 C语言内存空间的使用-指针的更多相关文章
- C语言中计算变量占用内存空间
C语言中计算变量占用内存空间 在C语言中通常用[sizeof]运算符计算变量占内存空间,如下面的例子:
- C语言malloc()函数:动态分配内存空间
头文件:#include <stdlib.h> malloc() 函数用来动态地分配内存空间(如果你不了解动态内存分配,请查看:C语言动态内存分配及变量存储类别),其原型为:void* m ...
- C语言calloc()函数:分配内存空间并初始化——stm32中的应用
经常在代码中看到使用malloc来分配,然后memset清零,其实calloc更加方便,一句顶两句~ 头文件:#include <stdlib.h> calloc() 函数用来动态地分配内 ...
- 嵌入式C语言4.3 C语言内存空间的使用-指针与运算符
1. ++.--.+.- int a=100; a+1; 对比: int *p=xxx; [0x12] p+1; [0x12+1*sizeof(*p)] 指针的加法(减法)运算, ...
- 嵌入式C语言4.2 C语言内存空间的使用-指针与修饰符:const,volatile,typedef
const:变量,只读[不能变] 内存属性: 1. 内存操作的大小 2.内存的变化性,可写可读 char *p; const char *p; 描述字符串,p指向的内容是只读的,不可再次修改 ...
- 使用malloc分别分配2KB,6KB的内存空间,打印指针地址
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<malloc.h> i ...
- 使用malloc分别分配2KB的空间,然后用realloc调整为6KB的内存空间,打印指针地址
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<malloc.h> i ...
- 【C/C++】C语言嵌入式编程修炼·背景篇·软件架构篇·内存操作篇
C 语言嵌入式系统编程修炼之一:背景篇 不同于一般形式的软件编程,嵌入式系统编程建立在特定的硬件平台上,势必要求其编程语言具备较强的硬件直接操作能力.无疑,汇编语言具备这样的特质.但是,归因于汇编语言 ...
- 嵌入式-C语言基础:malloc动态开辟内存空间
#include<stdio.h> #include<stdlib.h> int main() { // char *p;//定义一个野指针:没有让它指向一个变量的地址 // ...
随机推荐
- Spacemacs 的配置
Spacemacs 的配置 */--> Spacemacs 的配置 Table of Contents 1. 安利 2. 安装 3. layer 4. 自带的 layer 5. better-e ...
- Q480S-I7 D1 笔记本使用 VS2015 运行性能探查器会导致电脑自动重启?
漏洞导致 https://www.freebuf.com/vuls/159642.html 使用以下两句 无法修复该问题,建议升级 win10 系统,使用 vs2017 reg add "H ...
- 完美的Linux之【navi】使用笔记
今天要说的是才上线才两天,就已经获得超过1000星.开发者是一位来自巴西的小哥Denis Isidoro. 开发的工具navi Linux用户的日常困惑 新命令 用完就忘 ? 一时想不起来命令的单词怎 ...
- 同步按照NewTable中ID存储情况将数据按照规则同步至OldTable,并清空OldTable中多余数据行,返回错误消息
public string UpdateDataAdapter(DataTable tab) { if (sda == null) return "DataAdapter还未初始化,请调用G ...
- vue iview分页
距离上次博客更新已经快一个月了,期间也有想法在空闲的时候更新几篇博文. 燃鹅,最近懒癌作祟,丢掉的东西越来越多,再不遏止的话就真成癌了. 趁着刚看完一篇心灵鸡汤,让打满鸡血的我总结下前段时间用到的iv ...
- 第十五章 Kubernetes调度器
一.简介 Scheduler 是 kubernetes 的调度器,主要的任务是把定义的 pod 分配到集群的节点上.听起来非常简单,但有很多要考虑的问题: ① 公平:如何保证每个节点都能被分配资源 ② ...
- CSS实现三级菜单[转]
头部导航条布局 html代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"&g ...
- Python中类
1.类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称, 按照惯例它的名称是 self,self代表类的实例,而非类. self 不是 python 关键字,我们把他换成 r ...
- linux下安装maven私服nexus
Nexus介绍 Nexus 是Maven仓库管理器,如果你使用Maven,你可以从Maven中央仓库 下载所需要的构件(artifact),但这通常不是一个好的做法,你应该在本地架设一个Maven仓库 ...
- MySQL-其它整理
来自:http://www.w3school.com.cn/sql/sql_server.asp 一:基本操作 1)插入 INSERT INTO 表名称 VALUES (值1, 值2,....): I ...