[英]Is “char* string[]” equivalent to “char** string” in C++?
char* string[]
等效於C ++中的char** string
? 這兩個聲明之間到底有什么區別? 就內存訪問速度而言,最好的聲明是什么?
謝謝,
char * s[]
是一個指針數組。 char ** s
是指向指針的指針。 數組與指針不同,因此兩者是不同的。
(什么是真實的是,你可以經常把數組作為指針,其第一要素,所以沒關系說s[1][2]
在這兩種情況下。)
請注意, char *s[]
本身實際上無效。 它可以是一個聲明:
const char * s[] = { "hello", "world" }; // really `const char * s[2]`
或者它是一個函數的參數,在這種情況下,它實際上是相同的char**
:
void foo(char * s[]); // same as `void foo(char ** s)`
char* string[]
可以衰減到char** string
時, 通過數值參數傳遞或通過從值函數返回例如
兩者不相同
它們是不同的,但是,在大多數情況下,數組會衰減為指針(例如,當將值作為參數傳遞給函數時)。 因此,在這種情況下將索引拍打在那里並稱其為一天是完全可以的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.