【问题标题】:C:Pointer Arithmetic -How does it work?C:指针算术 - 它是如何工作的?
【发布时间】:2014-11-12 15:40:36
【问题描述】:

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

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

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

    return 0;
}

【问题讨论】:

  • 浏览一些教程。

标签: c pointers pointer-arithmetic


【解决方案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

您可能需要重新阅读教科书中有关指针运算的部分。

【讨论】:

    猜你喜欢
    • 2016-05-10
    • 1970-01-01
    • 1970-01-01
    • 2012-07-27
    • 1970-01-01
    • 2010-10-20
    • 2023-01-10
    相关资源
    最近更新 更多