若p和q是申明为类型兼容的指针变量,且都正确赋有合法值且不为NULL,那么,*p=*q是把指针q指向的目标值赋给指针p指向的目标;p=q则是使指针p指向指针q指向的目标(最终是p和q指向了同一目标,这个目标就是q指向的目标)。在q==NULL时,*p=*q非法操作,p=q是合法操作(使p和q同为NULL)。综上,除q为无效(NULL)时不能取值操作外,正常情况下*p=*q操作的是指针指向的目标,p=q操作的是指针本身——这是二者的本质区别。以下代码可以验证:
#include "stdio.h"
int main(int argc,char *argv[]){
int *p,*q,a=334,b;
q=&a;
p=&b;
*p=*q;
printf("b = %d,\ta = %d\n",*p,*q);//b获得了a的值
p=q,b=123;
printf("*p = %d,\t*q = %d,\tb = %d\n",*p,*q,b);//p,q都指向了a,b值未变
q=NULL;
p=q;//NULL指针作右值是合法的
printf("p = %p,\tq = %p\n",p,q);
printf("%d\n",*p);//取NULL指针的值*p是非法的
return 0;
}
验证结果如下:
c语言指针*p中p++什么意思
p:一级指针,表示p所指向的地址里面存放的是一个类型的值。
c语言中* p++是什么意思?
p++的意思就是先取出指针p指向的地址单元的数据,之后再将该值加1。由于运算符 * 的优先级高于运算符 ++,所以是先取指针p指向的地址单元的数据。具体如下:1、取数组当前位置的值*p;2、然后,p指向下一位置的数据。
c语言指针* p++什么意思?
p++就是先取出指针p指向的地址单元的数据,之后再将该值加1。由于运算符 * 的优先级高于运算符 ++,所以是先取指针p指向的地址单元的数据。若果是*(p++),那么就是先将地址加1,之后取出新地址中的数据。在c语言中 ++的优先级大于* i=*p++ 相当于 i=*(p++),又相当于 i=*p; p++; 但...
c语言中(*p)++和*p++含义应该不同吧?
(*p)++ : 表示指针p所指的存储空间的值自加一次。p++ : 由于++的优先级高于*,所以先执行++,相当于*(p++);例:如有定义:int a[5]={10,20,30,40,50};int *p=a,b;如写成:b=*p++; 则b的值为10,p自加一次由a[0]的地址指向a[1]的地址(就是值为20的变量地址),其它不...
C语言题,求过程。顺便问下p++是什么意思?
p++就是说指针下移一位,比如刚开始的是*p=x表示p指针指向x数组的第一位元素,当执行p++之后就会指向x数组的第二位元素,以此类推。而题中最后输出结果是5,因为最后一个元素没有对它进行*p+=x[i]操作 有不懂的请追问
c语言的* p++什么意思?
p++就是先取出指针p指向的地址单元的数据,之后再将该值加1。由于运算符 * 的优先级高于运算符 ++,所以是先取指针p指向的地址单元的数据。若果是*(p++),那么就是先将地址加1,之后取出新地址中的数据。在c语言中 ++的优先级大于* i=*p++ 相当于 i=*(p++),又相当于 i=*p; p++; 但...
c语言中* p++代表什么意思?
在C语言中,*p++表示对指针p所指向的值进行访问,并将指针p向后移动一个位置。具体解释如下:p:表示访问指针p所指向的值。p++:表示将指针p向后移动一个位置,即指向下一个元素。所以,*p++的执行顺序是先访问p指向的值,然后将指针p向后移动一个位置。需要注意的是,后缀递增运算符++具有较高...
c语言中,*p++是什么意思
p是一个指向某个数组的指针,那么*p++ 是表示两个意思:一、取数组当前位置的值*p 二、然后,p指向下一位置的数据。p=p+1
c语言p++什么意思?
p++ 就是把 p里面的内容+1个单位,因为 p存的是地址,所以是 地址+1,也就是下一个地址。而*p 是 取内容的意思,即 取当前存放内容对应(指向)的地址 里面的内容。p是指针,*(p+i)+j是指向二维数组第i行第j个元素的。变量q的值是变量b的地址。
c语言* p++是什么意思?
P++ :*和++都是同级运算符,右结合。但++要整个表达式运算完了才运算,先提取P指向对象的值,然后P再做++运算,指向下一个对象。*p++的意思就是先取出指针p指向的地址单元的数据,之后再将该值加1。下面具体区分 1、*p++:只将p加1 2、++p or p++:将p加1 3、++*p:将*p所指单元加1 ...