什么';这是*p++;,*++;p、 &x2B+*C语言指针中的p?

什么';这是*p++;,*++;p、 &x2B+*C语言指针中的p?,c,pointers,C,Pointers,我正在学习c编程语言的基本知识。现在我对指针部分感到困惑。 书中有一个原始问题: 数组a有一些值,指针p现在位于[1]: a[0]:10 a[1]:20 <---p a[2]:30 a[3]:40 a[4]:50 a[0]:10 a[1]:20 执行*p++后*p的值是多少 *p++首先取消对指针p的引用,然后递增指针p。所以下一次对*p的调用将返回30 *++p的值是多少 考虑以下示例: int array[] = {10, 20, 30}; int * p = array; in

我正在学习c编程语言的基本知识。现在我对指针部分感到困惑。 书中有一个原始问题:

数组a有一些值,指针p现在位于[1]:

a[0]:10
a[1]:20  <---p
a[2]:30
a[3]:40
a[4]:50
a[0]:10
a[1]:20
执行*p++后*p的值是多少

*p++
首先取消对指针p的引用,然后递增指针p。所以下一次对*p的调用将返回30

*++p的值是多少

考虑以下示例:

int array[] = {10, 20, 30};
int * p = array;
int array[] = {10, 20, 30};
int * p = array;
在这种情况下,*++p将打印20。首先,指针将递增,这意味着它将开始指向第二个元素。然后它将被取消引用

++*p的值是多少

考虑以下示例:

int array[] = {10, 20, 30};
int * p = array;
int array[] = {10, 20, 30};
int * p = array;
这里+++*p将打印11。首先,指针将被取消引用,返回10,然后再递增1,返回11

执行*p++后*p的值是多少

*p++
首先取消对指针p的引用,然后递增指针p。所以下一次对*p的调用将返回30

*++p的值是多少

考虑以下示例:

int array[] = {10, 20, 30};
int * p = array;
int array[] = {10, 20, 30};
int * p = array;
在这种情况下,*++p将打印20。首先,指针将递增,这意味着它将开始指向第二个元素。然后它将被取消引用

++*p的值是多少

考虑以下示例:

int array[] = {10, 20, 30};
int * p = array;
int array[] = {10, 20, 30};
int * p = array;

这里+++*p将打印11。首先,指针将被取消引用,返回10,然后再加1返回11。

您的推理是正确的,但问题可能措辞不正确:如果语句是
int q=*p++p
现在指向
30
,但是
q
等于
20
<代码>整数q=*++p
导致
p
指向
30
,而
q
也等于
30
。你可以用你喜欢的编译器自己尝试一下,你会有一个好主意。这些问题应该从同一开始就独立出来吗;或者你是先做1题,然后做2题,然后做3题?@M.M:这3个问题都是从同一个开始的——可能。。。这本书没有描述。你的推理是正确的,但问题可能措辞很糟糕:如果语句是
intq=*p++p
现在指向
30
,但是
q
等于
20
<代码>整数q=*++p
导致
p
指向
30
,而
q
也等于
30
。你可以用你喜欢的编译器自己尝试一下,你会有一个好主意。这些问题应该从同一开始就独立出来吗;或者你是先做1题,然后做2题,然后做3题?@M.M:这3个问题都是从同一个开始的——可能。。。这本书没有描述。