[关闭]
@okokme 2018-07-23T03:05:17.000000Z 字数 834 阅读 442

C语言指针

c语言


为什么要使用指针

1.指针使得不同区域的代码可以轻易共享内存数据。且字节数较少方便管理(任何类型的指针占用的字节数是一样的,不过根据平台不同,有4字节或者8字节或者其他可能)
2.指针使得一些复杂的链接性的数据结构的构建成为了可能,比如链表,链式二叉树等。
3.有些操作必须使用指针。如操作申请的堆内存还有c语言的一切函数调用中,值传递都是“按值传递“的,如果我们要在函数中修改被传过来的对象,就必须通过之歌对象的指针来完成。

指针是什么

任何程序数据载入内存后,在内存都有他们的地址,这就是指针。而为了保存一个数据在内存中的地址我们就需要指针变量。
指针是程序数据在内存中的地址,而指针变量是用来这些地址的变量

为什么程序中的数据会有自己的地址

操作系统将RAM等硬件软件结合起来,给程序员提供一种对内存使用的抽象。着用抽象机制使得程序使用的是虚拟存储器,而不是直接操作和使用真实存在的物理存储器。所有的虚拟地址形成的集合就是虚拟地址空间。

256M的内存

也就是说,内存是一个很大的,线性的字节数组(平坦寻址)。每一个字节都是固定的大小,由8个二进制位组成。最关键的是,每一个字节都会有一个唯一的编号,编号从0开始,一直到最后一个字节。如上图这是一个256M的内存,他一共有256×1024*1024=268435456个字节。那么它的地址范围就是 0-268435455。
由于内存中的每一个字节都有一个唯一的编号,因此,在程序中使用的变量,常量,甚至数函数等数据,当他们被载入到内存中后,都有自己唯一的一个编号,这个编号就是这个数据的地址。指针就是这样形成的。
(指针的值一般用16进制表示)

  1. #include <stdio.h>
  2. int main(void)
  3. {
  4. char ch = 'a';
  5. int num = 97;
  6. printf("ch 的地址:%p\n",&ch); //ch 的地址:0028FF47
  7. printf("num的地址:%p\n",&num); //num的地址:0028FF40
  8. return 0;
  9. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注