2011-03-19 49 views

回答

1

在C中的顯式的形式是這樣的:

char part1[] = "/dev/test_kft"; 
char part2[] = "1"; 
char path[strlen(part1) + strlen(part2) + 1]; 
strcpy(path, part1); 
strcat(path, part2); 

這仍然沒有複製的事實「隱式」連接形式位於rodata段中。在我給出的例子中,它將在堆棧中。你可以用malloc把它放在堆上。隱式版本在編譯時完成,如果可能的話,首選。

+1

雖然我不明白「一」「二」是不是明確的。隱藏什麼? – detly 2011-03-19 07:24:20

+0

@detly是的,這個答案非常糟糕......它甚至不涉及這個問題。可憐的OP讓SO困惑,永不回頭。 – 2014-08-11 06:17:52

+0

@JimBalter如果你讀過OP對其他答案的評論,你會發現他原來的問題不是很清楚。 SO並沒有真正處理這種情況。我回答了似乎是他真正的問題。 – 2014-08-12 16:39:13

10

它是由編譯器執行的隱式串聯。結果爲"/dev/test_kft1"

+0

什麼是在C/c + +中串接字符串的顯式形式? – 2011-03-19 06:14:04

+0

您可以使用libc庫中的strcat或strncat函數 – chappar 2011-03-19 06:57:13

4

預處理符連接相鄰的字符串常量,使得線相同

fd1 = open("/dev/test_kft1", 00);

+0

什麼是**顯式**表單在C/C++中串接字符串? – 2011-03-19 06:31:45