C语言中指针*p=*q与p=q有什么区别

2020-06-26 科技 869阅读

答:*p=*q与p=q的本质区别在于:*p=*q操作的是变量存储的数值,p=q操作的是指针变量本身

C语言中,指针操作主要有以下三种情况:

*p   是指针变量p指向的变量a的存储内容,*p = 5;

p   是指针变量的存储内容,因为p指向a,所以p的存储内容(存储空间的值)就是系统为变量a分配的存储地址;

&p  是对指针变量p进行取地址的操作。


扩展资料:

指针的机制比较简单,其功能可以被集中重新实现成更抽象化的引用(reference)数据形别。

许多编程语言中都支持某种形式的指针,最著名的是C语言,但是有些编程语言对指针的运用采取比较严格的限制,如Java一般避免用指针,改为使用引用。

有两种含义,一是作为数据类型,二是作为实体。

指针作为实体,是一个用来保存一个内存地址的计算机语言中的变量。指针一般出现在比较底层的程序设计语言中,如C语言。高层的语言如Java一般避免用指针,而是引用。

指针作为数据类型,可以从一个函数类型、一个对象类型或者一个不完备类型中导出。从中导出的数据类型称之为被引用类型(referenced type)。指针类型描述了一种对象,其值为对被引用类型的实体的引用。

C++标准中规定,“指针”概念不适用于成员指针(不包含指向静态成员的指针)。C++标准规定,指针分为两类:

1、object pointer type:指向void或对象类型,表示对象在内存中的字节地址或空指针。

2、function pointer type:指代一个函数


C中函数调用是按值传递的,传入参数在子函数中只是一个初值相等的副本,无法对传入参数作任何改动。但实际编程中,经常要改动传入参数的值。

这一点我们可以用传入参数的地址而不是原参数本身,当对传入参数(地址)取(*)运算时,就可以直接在内存中修改,从而改动原想作为传入参数的参数值。

(*p)操作是这样一种运算,返回p 的值作为地址的那个空间的取值。(&p)则是这样一种运算,返回当时声明p 时开辟的地址。显然可以用赋值语句对内存地址赋值。

参考资料来源:百度百科-指针

声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com