的阵列可以说我有下面的代码:遍历指向字符指针
char *array[] = {"one", "two", "three"};
char *(*arrayPtr)[] = &array;
如何遍历数组?我试过这样做,但不起作用:
for(int i = 0; i < sizeof(array)/sizeof(array[0]); i++) {
printf("%s\n", (*arrayPtr + i));
}
的阵列可以说我有下面的代码:遍历指向字符指针
char *array[] = {"one", "two", "three"};
char *(*arrayPtr)[] = &array;
如何遍历数组?我试过这样做,但不起作用:
for(int i = 0; i < sizeof(array)/sizeof(array[0]); i++) {
printf("%s\n", (*arrayPtr + i));
}
您所拥有的方案缺少一个方法。 *arrayPtr + i
是数组的第i个元素的地址。这意味着它是一个char**
。你需要至少提领的是:
printf("%s\n", *(*arrayPtr + i));
然而,这是不是你有没有有效的C,因为你在定义指针时省略数组的大小。我希望这不是你写的实际代码。
另外,请注意,您可以使用下标运算符Blagovest Buyukliev指出,但是对运算符的优先级感到厌倦。它是(*arrayPtr)[i]
而不是*arrayPtr[i]
。
任何原因你不能使用普通的'array [i]'? – StoryTeller
@StoryTeller我必须传递变量数组作为指向结构的指针 – ssd20072
首先,如果您认为需要像'&array'中那样获取数组地址,那么您可能是错误的。 –