指针

来源:互联网 发布:linux互斥锁 实例 编辑:程序博客网 时间:2024/06/11 07:33

1. 什么是指针?

答:指针是一个变量,用来存放内存地址;用户通过指针变量可以直接获取和操作指针所指向的内存;

2. 指针总结

指向整数的指针变量: int *pValue;

双重指针: 指向指针的指针;

        int **pValue; //它指向的指针指向一个整形数;

指针数组: 本质为数组,其数组元素为指针;

        int* pArr[10];//一个有10个指针的数组;

数组指针: 本质为指针,指向数组的指针;

        int (*pArr)[10];//一个指向有10个整形数的数组的指针;

函数指针: 本质为指针,指向一个函数;

        int (*f)(int,int);        //指针,指向一个函数,该函数有两个整形的参数,并且返回一个整形数;

函数返回指针: 函数,返回值为指针;

        int* f(int, int);        //函数返回值为int*,该函数有两个整形的参数

const指针: 指针所指向的对象的值不能被改变;

        int nValue = 100;        const int *pA = &nValue;        *pA = 10; //错误        int nNewVal = 10;        pA = &nNewVal;//正确

指向const的指针: 指针所指向的对象不能被改变;

        int nValue = 100;        int* const pA = &nValue;        *pA = 10; //正确        int nNewVal = 10;        pA = &nNewVal;//错误

指向const的const指针: 指针所指向的对象及对象的值均不能被改变;

        int nValue = 100;        const int* constpA = &nValue;        *pA = 10; //错误        int nNewVal = 10;        pA = &nNewVal;//错误

3. 指针和引用的区别

非空区别: 在任何情况下都不能使用指向空值的引用,一个引用必须指向一个对象;

合法性区别: 在使用引用时不需要测试其合法性;

可修改性区别: 指针可以被重新赋值指向另一个不同的对象,而引用指定的内容不能被改变;

应用区别: 指针通过某个指针变量指向一个对象后,对他所指向的变量间接操作,而引用本身就是变量的别名,对引用的操作就是对变量的直接操作;故使用引用,程序的可读性优于使用指针;

0 0