我正在学习c编程语言的基本知识。现在我对指针部分感到困惑。书中有原问题:
数组 a 有一些值,指针 p 现在位于 a[1]:
a[0]:10
a[1]:20 <---p
a[2]:30
a[3]:40
a[4]:50
Run Code Online (Sandbox Code Playgroud)
问题清单:
*p执行后的值是* p++什么?* ++p什么?++ * p什么?那么,*p++, * ++p,之间有什么区别++*p?
在我看来:
*p++意味着移动指针p指向下一个元素,所以第一个答案是 30。*p++和*++p一样的差异i++和++i。所以第二个答案是 30。*p表示指针p的值,所以++*p表示让p值增加1。所以第三个答案是21;我对吗?
执行 * p++ 后 *p 的值是多少?
*p++首先取消对指针 p 的引用,然后增加指针 p。所以下一次调用 *p 将返回 30。
* ++p 的值是多少?
考虑以下示例:
int array[] = {10, 20, 30};
int * p = array;
Run Code Online (Sandbox Code Playgroud)
在这种情况下, * ++p 将打印 20。首先指针将递增,这意味着它将开始指向第二个元素。然后它将被取消引用。
++ * p 的值是多少?
考虑以下示例:
int array[] = {10, 20, 30};
int * p = array;
Run Code Online (Sandbox Code Playgroud)
这里 ++ *p 将打印 11。首先指针将被取消引用返回 10,然后将增加 1 以返回 11。