gpt4 book ai didi

C - 具有前增量和后增量的指针行为

转载 作者:行者123 更新时间:2023-12-05 02:22:50 25 4
gpt4 key购买 nike

我正在用 C 指针做一些实验并试图理解它的行为。以下是我对以下代码的假设。如果我错了,请纠正我。我有以下代码:

int n[5] = {3,6,9,12,15};   
int *ptr = n;
ptr++;

printf("%d", *ptr); //Needless to say, the output will be 6

我的假设:上面的输出是 6 因为 ptr++ 意味着 ptr = ptr + 1 我正在改变 value 是 n[0]地址


现在我们来看下面的场景:

int n[5] = {3,6,9,12,15};   
int *ptr = n;
*ptr++;

printf("%d", *ptr); //Why is the output still 6?

我的问题是:我们如何解释*ptr++?这是否意味着:

  • *ptr = *ptr + 1 或
  • *ptr = ptr + 1 或
  • ptr = ptr + 1 还是什么?

顺便说一句,当我打印出 n 的值时,它仍然是 3,6,9,12,15


抱歉第二个问题:

*++ptr++*ptr应该怎么解释呢?

最佳答案

表达

*ptr++;

有值(value)

*ptr

在递增 ptr 之前,然后 ptr 自增。写的没意义

*ptr++;

因为 ptr 递增之前的表达式值 *ptr 没有被使用。所以实际上这些表达式(表达式语句)的结果

ptr++;

*ptr++;

是一样的。

对于表达式 *++ptr++*ptr 然后在这个表达式中 *++ptr 首先 ptr 递增(也就是说它将指向数组的第二个元素)然后取消引用,它的值是第二个元素的值。在此表达式 ++*ptr 中,首先返回数组第一个元素的值(即 3),然后该值递增,您将得到 4。

关于C - 具有前增量和后增量的指针行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27012198/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com