C:指针算术 - 它如何工作?

时间:2014-11-12 15:40:37

标签: c pointers pointer-arithmetic

我是C编程的新手,并试图理解指针算法的工作原理。当printf的参数为*(p + 2)且4为* p时,下面的printf语句打印2。你能解释一下这种行为吗?

#include <stdio.h>
#include <conio.h>

int main()
{
    int arr[4] = {4,3,2,1}, *p = arr;
    printf("\n%d", *(p+2));

    return 0;
}

1 个答案:

答案 0 :(得分:1)

让我们重新编写你的程序,让它更清晰一点:

#include<stdio.h>

int main(void)
{
    int arr[4] = {4,3,2,1};
    int *p = arr;
    printf("\n%d", *(p+2));
    return 0;
}

现在,*(p+2)定义与p[2]相同。由于p指向arr的第一个元素,因此p[2]arr[2]相同,等于2

同样,*(p)*p相同,并且p指向arr的第一个元素,然后*(p)4

您可能需要重新阅读教科书中涵盖指针算术的部分。