我在做C語言編程,需要幫助解決這個問題..初始化指向一個字符指針全球
char str[] = "Hello";
char * ptr = str;
char ** ptr2 = (char**)ptr;
我有一個頭文件這三行。前兩行很好,但第三行會出現錯誤。顯式的錯誤是「初始化元素不是常量」。
是否有任何其他方式將ptr
的地址分配到*ptr2
全球?或者,這是不可能實現全球? 我想這樣做ptr2
可以是常見的接入點,但它指向的內容可以根據需要進行更改。
我在做C語言編程,需要幫助解決這個問題..初始化指向一個字符指針全球
char str[] = "Hello";
char * ptr = str;
char ** ptr2 = (char**)ptr;
我有一個頭文件這三行。前兩行很好,但第三行會出現錯誤。顯式的錯誤是「初始化元素不是常量」。
是否有任何其他方式將ptr
的地址分配到*ptr2
全球?或者,這是不可能實現全球? 我想這樣做ptr2
可以是常見的接入點,但它指向的內容可以根據需要進行更改。
首先,這樣的:
char ** ptr2 = (char**)ptr;
的ptr
的地址不分配給ptr2
。它的str
地址(包含在ptr
)分配給ptr2
,假裝它是一個char**
代替char*
,可能有災難性的後果後,當您嘗試使用它。你大概的意思是:
char ** ptr2 = &ptr;
由於&ptr
(該地址)的確是恆定的,不像ptr
(價值),這應該沒有錯誤編譯。另外,這是你真正想要的東西。
我的猜測是,你要ptr2
指向ptr
。這意味着分配的ptr
地址ptr2
,不*ptr2
你要做這樣的:
char** ptr2 = &ptr;
我不明白你的目標。 ptr
也可以根據需要進行更改。
請審議關於您的變量更好的名稱。
我覺得變量的名稱已被僞裝,因爲原來的變量名可能是無關緊要的。 – dreamlax 2010-08-26 02:00:56
謝謝你們這樣快速的回答!它修復了錯誤:) – ilikeC 2010-08-26 02:30:49