内存,指针

简介: 内存,指针

1.在你的32位电脑中,有32根地址线(实物),当给这32根地址线通电时,有高电频(1)、低电频(0),这32根地址线通电后会将电信号转换为数字信号,所有二进制序列的可能性便有2^32种。内存的最小单元是字节(byte),由此可见内存共有2^32个字节的空间,即4GB。

2.而地址是什么呢?计算机中的内存单元都有自己的编号,这些编号就是地址(C语言中的指针)。

int a=10;

变量的创建需要向内存中申请空间,上面的代码本质上其实是向内存申请4个字节的空间。

int* p=&a;

变量a占用4个字节的内存空间,但是&a的结果是什么呢?我们创建指针变量p来接受a的地址,当我们&a时,拿到的是四个字节中第一个字节的地址。

3.学习指针有什么用?这就好比你知道了别人的地址,你可以通过地址找到那个人。C语言中也一样,上面创建的指针变量p存放的就是变量a的地址,我们用解引用操作符 * 就可以通过地址找到变量a中存放的10.

printf("%d",*p);

通过解引用指针变量(*p)就可以找到变量a中存放的内容。这段代码便可以输出10。

4.指针变量的大小是几个字节呢?

 1.中说过,内存的最小单元是字节,所以可以说地址的存储需要多大空间,指针变量的大小就是几个字节。而地址是什么呢?计算机中的内存单元都有自己的编号,这些编号就是地址。每种编号就是32位二进制的序列,即4字节。可以得出结论,在32位机器上指针变量的大小是4字节,64位机器上是8字节。

相关文章
|
2月前
|
存储 C语言
指针和动态内存分配
指针和动态内存分配
89 0
|
17天前
|
C++
析构造函数就是为了释放内存,就是在局部指针消失前释放内存,拷贝构造函数就是以构造函数为模块,在堆里面新开一块,同一个变量在堆里面的地址
本文讨论了C++中构造函数和析构函数的作用,特别是它们在管理动态内存分配和释放中的重要性,以及如何正确地实现拷贝构造函数以避免内存泄漏。
30 2
|
2月前
|
存储 安全 Go
Go 中的指针:了解内存引用
Go 中的指针:了解内存引用
|
3月前
|
运维
开发与运维数组问题之指针的加减法意义如何解决
开发与运维数组问题之指针的加减法意义如何解决
41 7
|
3月前
|
存储 C++ 运维
开发与运维数组问题之指针的定义语法如何解决
开发与运维数组问题之指针的定义语法如何解决
32 6
|
3月前
|
存储 安全 程序员
|
4月前
|
C++ 存储 Java
C++ 引用和指针:内存地址、创建方法及应用解析
'markdown'C++ 中的引用是现有变量的别名,用 `&` 创建。例如:`string &meal = food;`。指针通过 `&` 获取变量内存地址,用 `*` 创建。指针变量存储地址,如 `string *ptr = &food;`。引用不可为空且不可变,指针可为空且可变,适用于动态内存和复杂数据结构。两者在函数参数传递和效率提升方面各有优势。 ```
|
4月前
|
Java 程序员 Linux
探索C语言宝库:从基础到进阶的干货知识(类型变量+条件循环+函数模块+指针+内存+文件)
探索C语言宝库:从基础到进阶的干货知识(类型变量+条件循环+函数模块+指针+内存+文件)
43 0
|
4月前
|
存储 缓存 算法
详解JVM内存优化技术:压缩指针
详解JVM内存优化技术:压缩指针
|
5月前
|
C++ 索引
使用指针减法管理内存
使用指针减法管理内存