
指针初识
发布日期:2021-05-07 10:11:53
浏览次数:26
分类:原创文章
本文共 1240 字,大约阅读时间需要 4 分钟。
指针无疑是C语言的精髓 - 要学习的指针,就要了解内存
一、内存是怎么编号的?
其实我们在讨论计算机时,计算机有32位/64位等机器
32位 - 32位地址线(物理线) - 通电(正负电) - 1/0
64位
拿32位来说可能就有2^32个以下的序列
00000000000000000000000000000000
…
01111111111111111111111111111111
…
11111111111111111111111111111111
电信号转换为数字信息:1和0组成的二进制序列
二、一个这样的内存单元是多大空间?
假设一个内存单元是1bit - 2^32bit
在计算器中计算得到:
1 0000 0000 0000 0000 0000 0000 0000 0000 - 2^32
4,294,967,296bit - 转换为十进制
536,870,912Byte - /8
524,288Kb - /1024
512Mb - /1024
0.5Gb - /1024
char - 1Byte - 8bit - 如果给每个bit都有一个地址 - 太浪费了
经过平衡后,以一个字节为内存单元,然后分配地址
三、地址
#include<stdio.h>int main(){ //a在内存中分配空间 - 4个字节 int a = 10; //输出地址 - %p printf("%p\n", &a); //存放地址 - pa用来存放地址 - *说明pa是指针变量 - int说明pa执行的对象是int类型的 - pa这个变量的类型就是int* int* pa = &a; //使用 - 这颗星叫解引用操作符 - *pa就是通过pa的地址,找到a *pa = 20; printf("%d\n", a);//20 return 0;}
四、指针变量有多大?
#include<stdio.h>int main0202(){ printf("%d\n", sizeof(char*)); printf("%d\n", sizeof(short*)); printf("%d\n", sizeof(int*)); printf("%d\n", sizeof(long*)); printf("%d\n", sizeof(float*)); //发现不管是什么类型的指针都是4个字节大小? //因为指针是用来存放地址的 //在32(x86)位机器下 - 指针是4Byte //在64(x64)位机器下 - 指针是8Byte return 0;}
通过F10调试观察内存
1.F10调试
2.找到内存窗口 可以再把监视窗口也打开
完成以上步骤则会有两个窗口
3.将内存窗口设置为4列
观察相邻的两块内存地址
4.在内存窗口中是以十六进制的形式显示的,且每2个数字是1个字节
十六进制0a转换为十进制为10
在监视窗口发现取出的地址是内存中第1个字节的地址
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年04月03日 17时37分49秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
点击控制盒子移动
2019-03-05
快速排序
2019-03-05
js求阶乘
2019-03-05
小程序图片正确使用方式(防止发布之后不显示)
2019-03-05
C++基础学习笔记08——模板
2019-03-05
Java学习
2019-03-05
Js函数
2019-03-05
Python机器学习算法基础概述
2019-03-05
关于OCR的一些有用的技术博客文章链接
2019-03-05
jquery中用on事件委托的方式绑定事件
2019-03-05
蓝桥杯 2016c/c++A组 方格填数
2019-03-05
L1-039 古风排版 (20分)
2019-03-05
L1-009 N个数求和 (20 分)
2019-03-05
L2-031 深入虎穴 (25 分)
2019-03-05
Unity之PlayerPrefs
2019-03-05
简单的xml读取存储方法(未优化)
2019-03-05
Flower
2019-03-05
Nginx---惊群
2019-03-05
Redis未授权漏洞
2019-03-05