lzth.net
当前位置:首页 >> C语言 *p 和p的区别? >>

C语言 *p 和p的区别?

一、表示的东西不同*p表示p代表相应数据类型在存储单元中存储的首地址,而这个存储单元存储的是相应类型数据的数值.**p表示p也表示地址,简单的说,这个地址对应的存储单元存储的数也是一个地址,而不是数值,而这个被存储的地址对应的存储单元存储的数据才是真正的相应类型的数值.

*p++//它相当于*(p++),首先指针p后移,由于对指针是后缀加,所以p++返回p没后移时的指针,如果是数组,那么表达式的值为指针当前所指元素(指针没有后移时)的值*++p//相当于*(++p),指针p先后移,如果是数组,则指向下一个元素,然后++p返回指针下移后的指针.然后*取下移指针后所指向的值

如果p是用typedef定义的一个类型的话,那么p*就是这种类型的指针变量类型,不然就是错误的用法把!*p如果出现在声明语句中,说明p是一个指针,如果前面已经声明过p那么*p就是对指针p的解引用,*p代表p指向的那个变量

*p是指针变量,p是普通变量.

举例:int a = 3; ///a是一个整型变量,值为3 int *p = &a;// p是一个指针,指向a的地址 说p,就是指针,*p 是指针指向的内容,即a地址中的内容 实际上*p 和a 这个应该是一个意思了

假设我们定义一个指针p.那么会经常使用到三个符号:1,p;2,*p;3,&p;初学者经常会感到很迷茫,到底这三个符号表示什么?我们知道,p是一个指针变量的名字,表示此指针变量指向的内存地址,如果使用%p来输出的话,它将是一个16进制

p是指针变量,其值是一个变量的地址.p收到了哪个变量的地址,就指向哪个变量.该变量成为p的对象.*p是p所指向的对象的值.例如:int i=3,*p; p=&i; 注意:p收到i的地址,故p指向i,i是p的对象 printf("%d,%d\n",i,*p); 输出:3,3 注意:*p是p所指向的对象的值,即i的值.祝学业进步!

*p()和*(p)()是一样的 你要问的是*p()和(*p)()吧int *p()表示的是返回类型是整型指针int (*p)()表示的是int ()类型的函数指针

*p表示指针p所指单元的内容p表示指针p所指单元的地址

赋值的时候*p表示这是一个指针,p表示是一个数 而用的时候如果p是一个指针,那么*p表示所指向的内容,p本身存着一个地址.

网站首页 | 网站地图
All rights reserved Powered by www.lzth.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com