簡體   English   中英

“ char * string []”等效於C ++中的“ char ** string”嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM