2010-08-26 94 views
0

我在做C語言編程,需要幫助解決這個問題..初始化指向一個字符指針全球

char str[] = "Hello"; 
char * ptr = str; 
char ** ptr2 = (char**)ptr; 

我有一個頭文件這三行。前兩行很好,但第三行會出現錯誤。顯式的錯誤是「初始化元素不是常量」。

是否有任何其他方式將ptr的地址分配到*ptr2全球?或者,這是不可能實現全球? 我想這樣做ptr2可以是常見的接入點,但它指向的內容可以根據需要進行更改。

回答

8

首先,這樣的:

char ** ptr2 = (char**)ptr; 

ptr的地址不分配給ptr2。它的str地址(包含在ptr)分配給ptr2,假裝它是一個char**代替char*,可能有災難性的後果後,當您嘗試使用它。你大概的意思是:

char ** ptr2 = &ptr; 

由於&ptr(該地址)的確是恆定的,不像ptr(價值),這應該沒有錯誤編譯。另外,這是你真正想要的東西。

0

我的猜測是,你要ptr2指向ptr。這意味着分配的ptr地址ptr2,不*ptr2你要做這樣的:

char** ptr2 = &ptr; 

我不明白你的目標。 ptr也可以根據需要進行更改。

請審議關於您的變量更好的名稱。

+0

我覺得變量的名稱已被僞裝,因爲原來的變量名可能是無關緊要的。 – dreamlax 2010-08-26 02:00:56

+0

謝謝你們這樣快速的回答!它修復了錯誤:) – ilikeC 2010-08-26 02:30:49