2017-04-04 59 views
0

的陣列可以說我有下面的代碼:遍歷指向字符指針

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

任何原因你不能使用普通的'array [i]'? – StoryTeller

+0

@StoryTeller我必須傳遞變量數組作爲指向結構的指針 – ssd20072

+0

首先,如果您認爲需要像'&array'中那樣獲取數組地址,那麼您可能是錯誤的。 –

回答

2

您所擁有的方案缺少一個方法。 *arrayPtr + i是數組的第i個元素的地址。這意味着它是一個char**。你需要至少提領的是:

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

然而,這是不是你有沒有有效的C,因爲你在定義指針時省略數組的大小。我希望這不是你寫的實際代碼。

另外,請注意,您可以使用下標運算符Blagovest Buyukliev指出,但是對運算符的優先級感到厭倦。它是(*arrayPtr)[i]而不是*arrayPtr[i]

+1

或者,'(* arrayPtr)[i]'。 –

+0

非常感謝! :) – ssd20072

+0

定義'array'或'arrayPtr'時是指數組大小嗎? – ssd20072