2012-01-04 57 views
2

從書:C++編程語言中,章節5.9鍛鍊1

寫入聲明爲以下內容:一個指針一個字符,一個 陣列的10個整數,一個REF-erence至10的陣列整數, 指向字符串數組的指針,指向 字符的指針,常量整數,指向常量整數的指針以及指向整數的常量指針。初始化每一個。

我通過「的指針字符串的數組」混淆。 Stroustrup需要什麼?這是從字面意思?以何種方式?

直線和簡單的解決方案:

char* c[] = {"foo", "bar", "baz"}; 
char** c_ptr; 

或者這一個:

typedef char carray[20]; 
typedef array* carray_ptr; 
carray_ptr ptr = new carray[10]; 

你覺得呢? (好的,指向指針的指針不是很直)。

+1

'啓動Stroustrup的讀心術系統。待機起飛......' – 2012-01-04 19:44:03

+0

這本書看起來不錯。比德語「C++ von A bis Z」更好,翻譯爲「C++ from A to Z」。但沒有解決方案的練習是 - 沒有幫助。即使「伴侶書」可用,我也不會購買它。 – Peter 2012-01-04 19:52:21

回答

2

通過這些聲明測試,通常最容易使用像cdecl這樣的工具。我認爲,在這種情況下,什麼書是尋找的是:

c 

是一個指針:

*c 

到一個數組:

(*c)[] 
字符串

char *(*c)[] 

或從cdecl

cdecl> declare c as pointer to array of pointer to char 
char *(*c)[] 

我只是做了什麼書預計猜測,但因爲下一個請求是「指針的指針到字符」,這將是不可思議兩個被問同樣的事情。

+0

看起來很整潔!謝謝! Stroustrup在本章中沒有在他的示例中顯示,只是關於指向函數的一行。我期待着下一章(包括運算符優先級),這應該對我有所幫助。 – Peter 2012-01-04 20:13:33

0
typedef char* character_string; 
typedef character_string[20] array_of_character_strings; 
typedef array_of_character_strings* pointer_to_array_of_character_strings; 
pointer_to_array_of_character_strings ptr; //done 

或:

char*(*var)[20]; 

在所示:cdecl.ridiculousfish.com, 「聲明var當成指向指針的陣列20爲char」

0

1)第5章是關於「指針,數組和結構」。 我沒有看到任何「typedef的」略讀章節,所以我不會在這個練習中使用它們。

2)一個可以指向「的argv」作爲一個極好的例子「的指針,字符串的數組」:在你的第一個例子當然將工作

int main (int argc, char *argv[]) 

3)「c_ptr」(雖然也許一個更好的名字 可能是 「c_pp」;)):

char* c[] = {"foo", "bar", "baz"}; 
char** c_ptr = c; 

「希望幫助!

0

分解成以下步驟:

  1. 一個指向數組:T (*p)[N]

  2. T = char const *爲您提供:char const * (*p)[N]

  3. 我們初始化一個指針與現有的東西的地址,所以先製作一個陣列:

    char const * arr[] = { "hello", "world" };

  4. 現在初始化由式(2)的傢伙:char const * (*p)[2] = &arr;