[英]Pointer Pointing to Pointer
可以說我有一個變量:
char** code;
然后,我做:
*code[0] = "Lucas"
可以說**code
持有一個指針數組( *code
是我在制作字符串的數組), *code[0]
等於"Lucas"
,而*code[0][2]
等於'c'
?
抱歉,如果它看起來很基礎,我對雙指針感到非常困惑! 提前致謝!
-盧卡斯·吉安科拉(Lucas Giancola)
可以說**code
持有一個指針數組是否有效
不它不是。 您已經為單個指針分配了空間。 您已經告訴編譯器,該指針將指向另一個指針(您尚未創建),該指針指向一個字符(您也尚未創建)
*code[0] = "Lucas"
無效的代碼,無法編譯
prog.cpp:6:8: error: invalid conversion from 'const char*' to 'char' [-fpermissive]
*f[0] = "Lucas";
如果你有
char** code;
*code[0] = "Lucas";
由於您沒有為code
分配任何內存,因此您將遇到未定義的行為。
您需要使用:
char** code = malloc(SOME_SIZE*sizeof(*code));
即使這樣,也可以使用:
*code[0] = "Lucas";
不好 有幾個問題。
code[0]
是一個指針。 *code[0]
是已取消引用的指針。 如果您在code[0]
已經有一些字符串,那么*code[0]
將是該字符串的第一個字符。 因此,分配是錯誤的。
另外, "Lucas"
將位於已編譯代碼的只讀部分。 在將其分配給char *
類型的變量之前,需要使用strdup
復制"Lucas"
。
您需要類似:
code[0] = strdup("Lucas");
現在,您可以使用code[0]
訪問整個字符串。 您可以使用*code[0]
訪問該字符串的第一個字符。 您也可以使用code[0][0]
訪問該字符串的第一個字符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.