我正在尝试使用指针算法打印数组索引。有谁知道如何做吗? 特别是“ 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;
}
答案 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-b
是b
指向数组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);