如何使用指针获取数组的索引

时间:2019-10-28 08:07:19

标签: c arrays pointers math

我正在尝试使用指针算法打印数组索引。有谁知道如何做吗? 特别是“ j”,我希望您这样做。

#include <stdio.h>

int main(void) {

    int b[10] = {2, 8, 4, 7, 1, -45, 120, 78, 90, -6};
    int *pb, j = 0;

    for(pb = &b[0]; pb < &b[10];) {
        printf("[%d] = %d\n", j, *pb++);
    }

    return 0;
}

2 个答案:

答案 0 :(得分:2)

赞:

int main(void) {

    int b[10] = { 2, 8, 4, 7, 1, -45, 120, 78, 90, -6 };
    int *pb, j = 0;

    for (pb = &b[0]; pb < &b[10]; pb++) {
        printf("[%td] = %d\n", pb-b, *pb);
    }

    return 0;
}

在指针算术中,您可以通过减法获得索引差:pb-bb指向数组pb中的元素的索引。我还将*pb++移到了for循环增量上,以避免出现一个错误。

答案 1 :(得分:1)

这是另一种选择:

int b[10] = {2, 8, 4, 7, 1, -45, 120, 78, 90, -6};
for (int* pb = b; pb != b + sizeof(b) / sizeof(*b); pb++)
    printf("[%d] = %d\n", pb - b, *pb);