8)指针

    1. 指针变量也是一种数据类型,占有内存空间,用来保存内存地址    对于32位,就是4个字节,要是64位,就是8个字节
    2.  *p操作内存
    3. 指针释放完,free(p)  要赋空, 否则p还存着之前的内存地址,就会变成野指针,最好是0或者NULL
    4. 指针变量和它指向的内存块是两个不同的概念
          1.     规则1:给p赋值p=0x1111,只会该改变变量指针的值,不会改变所指向的内容;
              1.                 p=p+1;或者 p++;

             2.              规则2:给*p赋值*p=‘a’,不会改变指针变量的值,只会改变所指向的内存块

             3.              规则3:=左边*p 表示给内存赋值,=右边*p便是取值,含义不同

             

 在指针声明时,*号表示所声明的变量为指针

 在指针使用时,*号表示操作指针所指向的内存空间的值

*p相当于用过地址(p变量的值)找到一块内存,然后操作内存

指针就是一种变量类型,只不过,它存的时地址,而别的变量类型如int或者char就是存对应的char型和int型变量。

指针易错点:

1 操作内存块,要保证那块内存是可以修改的,就是  可读和可写
2 指针是一种数据类型,指针步长(p++),取决于指针存的地址的类型,要是int,就是4,要是char就是1,要是double就是8或者等等。
3 p++等价   p+sizeof(a)
4 
5 当我们不断给指针变量赋值时,就是不断该百年指针变量,但是注意,我们并没有改变存数据的那块内存,指针指向谁,就是把谁的地址给他
6 
7 不允许向NULL或者未知非法地址拷贝内存

 其他知识:

1 通过指针可以给变量间接赋值
2 通过指针,传给函数,用形参改变实参的值,(如果想通过函数改变实参的值,就得传实参类型的指针)
3 间接赋值是指针存在的最大意义
4 二级指针: 

 

原文地址:https://www.cnblogs.com/xiaoyoucai/p/8011323.html