上嵌学习笔记

1215学习总结

2016-12-15  本文已影响5人  尘随风

指针

1.指针类型是一种特殊类型
    DataType *name;
    DataType* name;
    DataType * name;
    
    指针与普通变量的区别:
    指针: 存地址
    普通变量:存值
    指针只能保存与其相同类型的地址
2.初始化
    int *p = NULL;  //ok
    NULL表示空地址
    int a = 3;
    int *pa = &a;   //ok
    
    int *pb;
    pb = &a;    //ok        
    int *pc;
    *pc = &a;   //error
3.地址的访问
    *:间接访问运算符;
    *p
    空地址不能访问里面的值
4.可以把指针变量赋值给同类型指针
5.不同类型的指针大小
    64位机:8
    32位机:4
6.指针的类型和指针所指向的类型
    int *pa;
    double *pb;
    指针的类型:去掉变量名之后的部分
    指针所指向的类型:去掉指针变量名和其前面的*
7.指针与数组
    数组名是一个地址,
    数组元素的访问:
        int arr[5] = {1,2,3,4,5};
        int *p = arr;
    形式:
        arr[0];   arr[3];
        *(arr);   *(arr+3);
        *(pa);    *(pa+3);
        p[0];     p[3];
8.野指针
    没有初始化,或其指向的内存被释放,而指针没有被置空;
    危害:
        造成系统资源的浪费,容易造成未知的致命错误。
9.指针的地址运算
    指针的自增:指针向高地址方向移动
          自减:指针向低地址方向移动
          移动的字节数是指针所指向的类型的大小
    指针相加没有意义,指针相减表示两指针的距离
    指针加减一个常量,表示地址往高字节或低字节方向移动
    常量值*sizeof(对应数据类型)个字节
10.概念区分
    int buf[3]; //数组,大小为3,存放3个int型变量
    int *pb;    //指针,其类型为int*型
    int *arr[3];    //指针数组
    int (*pa)[3];   //数组指针,又称行指针

二级指针

DataType **PointorName;
int a = 10;
int *q = &a;
int **p = &*q;
**p == *q == a;
定义一个指针,或对地址进行操作时,一定要确定指针的指向

总结:

指针就是存储地址的单元;指针基本上跟数组名等同,理解起来有点难度,注意思维的转变,暂时我理解起来还没有什么问题,主要是对指针还不能熟练的运用,指针是C语言的灵魂,以后要注意对指针的锻炼。

上一篇 下一篇

猜你喜欢

热点阅读