2011-10-24 125 views
0

我在一段時間內沒有用c語言編寫代碼,而且我從來沒有用過指針。c programmin數組和指針

我有這個開始爲主。

int main(int argc, char *argv[]) 

我需要能夠做的副本*的argv []在全球範圍內,允許多個線程訪問它,有沒有一種快速/簡單的方法來做到這一點?

+3

用C語言編程,知道像手背一樣的指針。瞭解關於它們的所有信息:) –

回答

1

一種方式做到這一點:

char **  prog_argv; 
int   prog_argc; 

int main(int argc, char *argv[]) 
{ 
    prog_argv = argv; 
    prog_argc = argc; 
    . . . 
} 

聲明一個全局指針prog_argv指向您argv[]陣列。請注意,你也應該使用全局的prog_argc來保證安全(儘管我認爲argv[argc]是一個空指針(?))。

當然,您需要在頭文件中聲明prog_argvprog_argc以利於其他項目源文件。

一些操作系統已經爲你做了這樣的事情。全局變量的名稱通常類似於_argv__argv

+0

謝謝,這是完美的! – Benjamin

3

您不需要拷貝argv數組(給出main)。你只需要將指針傳遞給你的線程。這很容易(通過傳遞參數,或者通過包含它的全局變量)。

+0

然後pthread_create(&thread1,NULL,do_thread_stuff,* argv);這是我正在嘗試,但得到的錯誤,對我做錯什麼的建議? – Benjamin

+2

我認爲它應該是'pthread_create(&thread1,NULL,do_thread_stuff,arg)''沒有任何明星。 –