docgetcs

一. 什么是内存

 

内存是一个临时存储器。当一个程序运行时,程序代码和参数变量会暂时先存放到内存中,然后由CPU来读取,接着再执行。如果电脑关机后,里面的数据也会清空。

 

二. 变量

 

一个数值可以变化的量。

例如 char, int, float, double

 

三. 地址与首地址

 

地址就是变量在内存中所占据的位置。

 

首地址则是第一个就是变量在内存中所占据的位置。

 

四. 指针

 

指针=首地址

 

五. 指针变量

 

关于首地址的变量

通常在变量后面加*代表

例如:int* (变量名)

 

六. 指针大小

 

指针大小是根据操作系统的位决定。假设电脑是32位的,那么指针大小就是4字节。如果64位,指针大小则是8字节。

 

七. 解引用

 

解引用就是返回内存地址中对应的内容。

在变量名前面加个*就能使用解引用功能。

 

     int x=100;

     int*p=&x; //*p指向x

 

     printf("%p",p); //答案是x的地址

     printf("%d",*p); //答案是x的内容100

 

八. 野指针

 

一个没有对象的指针。

例子:int* p;

 

九. 空指针

 

内容为NULL的指针。

例子:int*=NULL;

 

十. 万能指针

 

任何变量都能用的指针。总所周知指针的变量必须和所指定的对象同一个变量,不然则是会生成失败。

例子: int x=100;

             int* p=&x; //这个是有效输出,因为变量和指定对象的变量一样

            char* p1=&x; //这个则是无效输出,因为变量和指定对象的变量不一样

 

但是有个例外那就是void*,它可以作为任何指定对象的变量的指针。

              int* p2=&x; //这是成立的输出

 

十一. 多级指针

 

使用多过一个指针指向一个对象。

 

   int x=100;

   int*p =&x; //*p指向了x

   int**p1=&p //**p1 指向了*p,然后*p再指向了x

 

从以上代码中我们可以得知有两个指针指向了x。这就是多级指针。

分类:

技术点:

相关文章: