指针与内存

简介: 指针与内存

内存与指针

内存的管理

内存划分一个个的内存单元 编号

内存中将每一个字节看做一个内存单元

内存单元的编号也可以理解为地址

C语言中将地址又称之指针

地址的产生一条地址线来产生传输的

32位机器-32根地址线

232个32位二进制序列(0/1)

232个字节 = 4,294,967,296 Byte

          4,194,304 KB

          4096 MB

          4 GB

 

内存的使用

  变量创建的本质是向内存申请空间

& - 取地址符

&a - 拿出的是a所占内存的4个字节中地址较小的字节的地址

%p 以16进制的形式打印地址(不省略)

%x 以16进制的形式打印地址

 

int a = 0x11223344;

int * pa = &a; // 指针变量

&a-地址-指针

pa是用来存放地址(指针)的

pa是指针变量

Int 是在申明pa指向的对象的类型

int main() {
  int a = 10;
  int* pa = &a;
  *pa = 20; //解引用操作 *解引用操作符(间接访问操作符)
   // a = 20 
  return 0;
}

指针的理解

内存单位的编号 = 地址 = 指针

口头语中的指针一般是指针变量

指针变量是用来存放地址(指针)

指针大小的比较

char ch = 'w';

char* pc = &ch;

int a = 10;

int* pa = &a;

printf("%zd", sizeof(*pc));

printf("%zd", sizeof(*pa));

//指针变量是用来存放地址

//32/64位机器上,地址是32/64个(0/1)组成的二进制序列,地址的存放需要4/8个字节 所以指针变量的大小是4/8字节

//与变量的类型无关

输出 4 4

二进制1/0 1-bit 0 - bit

1byte = 8 bit

1KB = 1024byte

……

结构体

内置类型:char short int long long long float double  --不能直接表示复杂对象(多个变量)

struct stu

{

char name[20];

int age;

};

struct Book * psb = &b; //结构体指针

Printf(“%s %s %f\n”,(*psb).book_name,……);//结构成员访问操作符 结构体变量.成员名

结构体指针->成员名

                 psb->book_name,

 

相关文章
|
4天前
|
存储 C语言
C语言如何使用结构体和指针来操作动态分配的内存
在C语言中,通过定义结构体并使用指向该结构体的指针,可以对动态分配的内存进行操作。首先利用 `malloc` 或 `calloc` 分配内存,然后通过指针访问和修改结构体成员,最后用 `free` 释放内存,实现资源的有效管理。
30 12
|
3月前
|
存储 C语言
指针和动态内存分配
指针和动态内存分配
94 0
|
12天前
|
存储 编译器 Linux
【c++】类和对象(上)(类的定义格式、访问限定符、类域、类的实例化、对象的内存大小、this指针)
本文介绍了C++中的类和对象,包括类的概念、定义格式、访问限定符、类域、对象的创建及内存大小、以及this指针。通过示例代码详细解释了类的定义、成员函数和成员变量的作用,以及如何使用访问限定符控制成员的访问权限。此外,还讨论了对象的内存分配规则和this指针的使用场景,帮助读者深入理解面向对象编程的核心概念。
36 4
|
27天前
|
存储 Rust C#
内存指针解引用
【10月更文挑战第14天】
30 1
|
1月前
|
C++
析构造函数就是为了释放内存,就是在局部指针消失前释放内存,拷贝构造函数就是以构造函数为模块,在堆里面新开一块,同一个变量在堆里面的地址
本文讨论了C++中构造函数和析构函数的作用,特别是它们在管理动态内存分配和释放中的重要性,以及如何正确地实现拷贝构造函数以避免内存泄漏。
37 2
|
3月前
|
存储 安全 Go
Go 中的指针:了解内存引用
Go 中的指针:了解内存引用
|
4月前
|
运维
开发与运维数组问题之指针的加减法意义如何解决
开发与运维数组问题之指针的加减法意义如何解决
45 7
|
4月前
|
存储 C++ 运维
开发与运维数组问题之指针的定义语法如何解决
开发与运维数组问题之指针的定义语法如何解决
35 6
|
5月前
|
C++ 存储 Java
C++ 引用和指针:内存地址、创建方法及应用解析
'markdown'C++ 中的引用是现有变量的别名,用 `&` 创建。例如:`string &meal = food;`。指针通过 `&` 获取变量内存地址,用 `*` 创建。指针变量存储地址,如 `string *ptr = &food;`。引用不可为空且不可变,指针可为空且可变,适用于动态内存和复杂数据结构。两者在函数参数传递和效率提升方面各有优势。 ```
|
4月前
|
存储 安全 程序员