2010-10-26 55 views
0

因此,當我通過一個const char *函數一次,我可以再次使用它嗎?它似乎最終吐出垃圾給我。傳遞函數後重用指針的問題

const char *config_file = "file.txt"; 

function(int x, config_file); 
cout << "Number" << x; 


secondfunction(int y, config_file); 

我是否需要製作另一個指向config_file的指針?

如果是這樣,我該怎麼做?

謝謝!

+9

這也是迄今爲止從結構合理的代碼,這是非常困難的確定(1)它應該做什麼和/或(2)它做什麼。一個能夠證明問題的簡單程序(看起來像12行可能)和解釋它應該做什麼會有很大幫助。 – 2010-10-26 01:33:50

+1

這很混亂,我沒有看到config_file在哪裏被使用,所以沒有辦法回答你的問題。 – 2010-10-26 01:38:54

+2

+1這很難看到具有描述性,準確標題的SO問題。 – 2010-10-26 01:46:35

回答

10

不,你可以使用它就好了。儘管你提供的代碼是不可編譯的,但我想我明白你在問什麼。

一個代碼段,如:

const char *x = "Hello"; 
fnA (x); 
fnB (x); 

應該就好了。

如果發現fnB沒有得到什麼期望,那麼:

  • fnA正在改變x點(通常是不可能的,因爲它是一個const char *);或
  • 一些未顯示的代碼段正在改變指針本身;或
  • 東西正在破壞內存。

試試這個代碼爲例:

#include <iostream> 
#include <iomanip> 

static void fnA (const char *a) { 
    std::cout << "fnA: [" << a << "]" << std::endl; 
} 
static void fnB (const char *b) { 
    std::cout << "fnB: [" << b << "]" << std::endl; 
} 
int main (void) { 
    const char *x = "Hello"; 
    fnA (x); 
    fnB (x); 
    return 0; 
} 

它輸出,符合市場預期:

fnA: [Hello] 
fnB: [Hello] 
+4

+1閱讀心靈。 – karlphillip 2010-10-26 01:39:52