2012-06-06 45 views
-2

我曾經在一大塊的代碼(在C++)下面提到的功能:訪問值

void startup(const char *&  start, 
    const char *& stop); 

在此之後函數被調用我要訪問的字符值即字符串存儲在'開始'和'停止'之間。

我試圖訪問相同的方式是:

char *var=(c.start); 
    cout<<"\n Iterating over char pointer \n"; 
    while(var<=(c.stop)) 
    { 
     cout<<*var; 
     var++; 
    } 
    cout<<"\n"; 

然而,在嘗試訪問它這樣我得到下面提到的錯誤:

error: invalid conversion from ‘const char*’ to ‘char*’ [-fpermissive] 

有人能善待足以糾正錯誤......並幫助我訪問字符值

+0

什麼是'C'?爲什麼'startup'改變了它的參數的值? –

+0

什麼是'c.start'? –

回答

2

您只需更換下列行:

char *var=(c.start); 

有:

const char *var=(c.start); 

注意,const是指通過字符指針,不是指針本身指向。因此,像var++這樣的表達式是非常好的,因爲指針不是const。

+0

@ user1355603,它在使用方式上沒有任何區別。它只是有所作爲,因爲C++阻止你做錯事。如果指針不是「const char」,那麼你可能會不小心嘗試修改字符串。通過使用'const',這是不允許的。 –

+0

因爲'start'和'stop'是常量字符指針。通常不允許你將const指針複製到非const指針(除非你使用了強制轉換,但只有當你明白你在做什麼時才應該這樣做)。 –

0

你可以試試這個轉換在分配聲明:

char *pc = (char *)(c.start); 
+0

我在這裏得到的是基於我處理GCC C++編譯器的經驗,並且Visual C++的行爲有很大不同,所以你可以試試。 –