首页 > 试题广场 >

假如整型指针p已经指向某个整型变量x,则(*p)++和下面哪

[单选题]
假如整型指针p已经指向某个整型变量x,则(*p)++和下面哪一个等价?

  • p++
  • x++
  • *(p++)
  • &x++
() 括号优先级最高,对 (*p) 求值即对 p 进行解引用,因此相当于其指向的 x 变量,即 x++ 。
选项 B 正确。
发表于 2018-02-25 15:30:07 回复(0)
更多回答
一个类型里会出现很多运算符,他们也像普通的表达式一样,有优先级,其优先级和运算优先级一样:从变量名处起,根据运算符优先级结合,一步一步分析:
int p; //这是一个普通的整型变量  
int *p; //首先从P 处开始,先与*结合,所以说明P 是一个指针,然后再与int 结合,说明指针所指向的内容的类型为int 型.所以P是一个返回整型数据的指针  
int p[3]; //首先从P 处开始,先与[]结合,说明P 是一个数组,然后与int 结合,说明数组里的元素是整型的,所以P 是一个由整型数据组成的数组  
int *p[3]; //首先从P 处开始,先与[]结合,因为其优先级比*高,所以P 是一个数组,然后再与*结合,说明数组里的元素是指针类型,然后再与int 结合,说明指针所指向的内容的类型是整型的,所以P 是一个由返回整型数据的指针所组成的数组  
int (*p)[3]; //首先从P 处开始,先与*结合,说明P 是一个指针然后再与[]结合(与"()"这步可以忽略,只是为了改变优先级),说明指针所指向的内容是一个数组,然后再与int 结合,说明数组里的元素是整型的.所以P 是一个指向由整型数据组成的数组的指针  
int **p; //首先从P 开始,先与*结合,说是P 是一个指针,然后再与*结合,说明指针所指向的元素是指针,然后再与int 结合,说明该指针所指向的元素是整型数据.由于二级指针以及更高级的指针极少用在复杂的类型中,所以后面更复杂的类型我们就不考虑多级指针了,最多只考虑一级指针.  
int p(int); //从P 处起,先与()结合,说明P 是一个函数,然后进入()里分析,说明该函数有一个整型变量的参数,然后再与外面的int 结合,说明函数的返回值是一个整型数据  
Int (*p)(int); //从P 处开始,先与指针结合,说明P 是一个指针,然后与()结合,说明指针指向的是一个函数,然后再与()里的int 结合,说明函数有一个int 型的参数,再与最外层的int 结合,说明函数的返回类型是整型,所以P 是一个指向有一个整型参数且返回类型为整型的函数的指针 
原文:https://blog.csdn.net/constantin_/article/details/79575638  

发表于 2018-12-27 08:44:11 回复(1)
(*p)++:指针指向的内存地址中的变量值 +1,即 x = x+1
A选项:p++,指针p指向下一个地址值
B选项:x++,将变量 x + 1,即 x = x+1
C选项:*(p++),将指针指向下一个内存地址,且取其中存储的变量值
D选项:&x++,++运算符优先级比 & 高,所以是先将 x++ 再取 这个数字对应的地址值
发表于 2022-04-21 10:34:46 回复(2)
C *(p++) 也是x,后置自增是整个表达式结束后再自增
发表于 2019-11-12 13:06:41 回复(0)
ACD选项做了相同的事
发表于 2018-03-08 23:29:33 回复(0)
A、C、D都是在给p中地址加一个位(也就是4个位,例如p里面储存的地址的值是2040,那么pp+、*(p++)、&x++都是在给地址加一个位,加了之后就变成2044了,因为x是int类型,地址加一也就是加一个位),Bx++符合
发表于 2024-08-12 14:41:00 回复(0)
(*p)++     p是一级指针,*p也就是取指针所指向空间里的值,此时*p也可以理解为一个变量
发表于 2022-03-03 10:47:09 回复(0)
B
发表于 2018-03-12 21:24:09 回复(0)
b
发表于 2018-02-26 17:17:16 回复(0)