迭代指向char指针数组的指针

时间:2017-04-04 05:24:42

标签: c arrays loops pointers

假设我有以下代码:

char *array[] = {"one", "two", "three"};
char *(*arrayPtr)[] = &array;

如何迭代数组?我尝试过这样做但不起作用:

for(int i = 0; i < sizeof(array)/sizeof(array[0]); i++) {
    printf("%s\n", (*arrayPtr + i));
}

1 个答案:

答案 0 :(得分:2)

你所拥有的计划缺少一种偏见。 *arrayPtr + i是数组的第i个元素的地址。这意味着它是char**。你需要至少取消引用:

printf("%s\n", *(*arrayPtr + i));

但是,由于在定义指针时省略了数组大小,因此在那里不存在有效的C。我希望它不是你写的实际代码。

另外,请注意您可以使用下标运算符Blagovest Buyukliev指出,但要厌倦运算符优先级。它是(*arrayPtr)[i]而不是*arrayPtr[i]