指针引用和指针的区别,指针与引用有什么区别

1,指针与引用有什么区别C语言里面有指针没有引用,C++有指针和引用 。引用在底层实现上其实就是const指针,即指针常量,指向的地址不能变(指针本身不能改变),但是指向的地址的值可以改变,改变引用就是改变指向地址的值,在使用时不用在前面加*号 。所以可以说引用是一种特殊的指针 。1、引用是变量的别名, , 指针是变量的地址,指针变量存放着那个变量的地址2、指针是可以做算术运算的,引用不行3、指针可以为null,也有常指针,二维指针,引用没这些3、其实就是变量名与地址之间的区别,两个除了用法上有些相似 , 其他没什么太大关系 。网上好多的,你查下【指针引用和指针的区别,指针与引用有什么区别】
2 , 引用和指针的异同数组是一段已知的内存(已知首地址,已知类型 , 已知长度),而指针是某段内存的首地址(可能是一个字节 , 如char,也可能是多个字节 , 如int)引用其实就是起了个名字,本身什么都没有 , 不占用存储单元 。就像诸葛亮又叫诸葛孔明一样 。指针保存的是指向对象的存储地址 。int *b=&a;这样b的内容是a变量的地址 。引用和指针都是指针,引用是一钟常量指针,初始化需要指定指向哪个变量,一旦指定就不能修改 。常量指针是引用的本质?。。∫弥皇鞘挡蔚牧硗庖桓雒?在参数传递中形参的改变,实参也跟着改变;指针一般在参数传递中是用来返回多个参数;一般针对实参需要改变的恰当地使用引用,避开使用指针.参考书上说,杀鸡焉用牛刀(牛刀指指针).
3,指针引用作参数和指针做参数的区别这很好理解 , 别想多了 。int* 也就是一种类型而已,所以你的问题和 void f2(int p) 与 void f2(int &rp)有什么分别得到的回答是一样的 。rp当然要点内存空间 , 所占空间是一个指针的大小 。简单的来说,比如参数是 int *ptr; 假设其内容为0x12345678,内容指向的值为5,其在内存中的地址为0x00112233;那么调用第一个f传入的值是0x12345678,第二个传入的是0x00112233 。楼上的没说全,你都知道引用是别名,那就应该知道在函数内部可以修改rp指向的地址,以前指向的是a,你可以把他改成指向b;传指针是传入参数的一份拷贝,在函数内部修改指针指向的地址,并不会修改原实参所指向的地址 。可以写一个简单的程序测试下,在函数内部修改形参所指向的地址,调用完成后,看看实参指向的地址是否改变!传指针不会改变 , 传引用的会!动手实验下,记得更劳靠!指针和引用在被作为参数传递时的区别是:前者通过对地址的操作进而改变实参后者是以别名的方式对实参的直接处理达到同样效果 。两者的共同点就是,当实参传进来时,都能改变实参的值例:(引用)int swap(int& a,int& b);// 函数申明swap(m , n);//主函数 调用

    推荐阅读