我正在学习c语言的基本知识。现在我对指针部分很困惑。 书中有一个原始问题:
数组a有一些值,指针p现在位于[1]:
ggplot(d, aes(balance, as.numeric(default) - 1)) +
geom_point() +
geom_smooth(method = 'glm', method.args = list(family = 'binomial')) +
scale_y_continuous('default', breaks = 0:1, labels = levels(d$default))
问题清单:
a[0]:10
a[1]:20 <---p
a[2]:30
a[3]:40
a[4]:50
之后*p
的价值是什么?* p++
的价值是什么?* ++p
的价值是什么?那么,++ * p
,*p++
,* ++p
之间有什么不同?
在我看来:
++*p
表示将指针*p++
指向下一个元素,因此第一个答案是30。p
和*p++
的差异就像*++p
和i++
的差异一样。所以第二个答案是30。++i
表示指针p的值,因此*p
表示让++*p
值增加1.所以第3个答案是21; 我是对的吗?
答案 0 :(得分:2)
执行* p ++之后* p的值是多少?
*p++
首先取消引用指针p,然后递增指针p。因此,对* p的下一次调用将返回30。
* ++ p的价值是什么?
考虑以下示例:
int array[] = {10, 20, 30};
int * p = array;
在这种情况下,* ++ p将打印20.首先,指针将递增,这意味着它将开始指向第二个元素。然后它将被解除引用。
++ * p的价值是什么?
考虑以下示例:
int array[] = {10, 20, 30};
int * p = array;
此处++ * p将打印11.首先,指针将被取消引用,返回10,然后将增加1以返回11.