2013-04-12 72 views
2

另外: 這段代碼有意義嗎? (我是新來的C,所以不知道)char * derp [20]是什麼意思?

char*s1 = derp[0]; 
char*s2 = derp[1]; 

我覺得DERP是指向字符數組(即字符串數組),而我試圖讓兩個字符串出陣列。但是,當我嘗試將這兩個char *傳入一個函數(其原型是FindMaxOverlap(char * long,char * short)時,編譯器會拋出一個錯誤,指出存在FindMaxOverlap函數的隱式定義)。

+1

是的,這是一個'char *'數組,但編譯器錯誤是無關的(這可能與缺少的頭文件有關)。 – 2013-04-12 23:42:03

+2

請注意,'long'和'short'是保留關鍵字。 –

+2

「隱式定義...」意味着編譯器沒有看到你調用的函數的原型,所以猜測它所要做的和返回的是什麼。不過,這幾乎總是錯誤的。 :P檢查是否包含聲明該函數的頭文件。 – cHao

回答

2
char *derp[20]: 

derp聲明作爲指針的陣列20char

char*s1 = derp[0]; 

聲明s1的指針char與第一指針的derpchar元件初始化。只要derp的第一個元素被正確分配,例如使用malloc,它就是有意義的。

你可以通過s1s2FindMaxOverlap功能,但derp[0]derp[1]必須指向有效的對象。

當您調用FindMaxOverlap函數時,必須在源文件中聲明FindMaxOverlap,例如使用包含文件或通過在文件範圍聲明原型。

另請注意,longshort是C語言中的關鍵字,您不能將它們用作函數參數的標識符。

+1

看到cHao的評論,這裏的問題與'char'或者分配無關,只是關於庫包含的內容。 –

+0

謝謝!這是由我使用保留的短和長關鍵字引起的:P – girlrockingguna