指针初识
发布日期: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个字节的地址
在这里插入图片描述

上一篇:C语言 - 分支与循环
下一篇:关键字初识

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年04月03日 17时37分49秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章