我有一個函數像這樣的正常工作:添加一個字符陣列到另一個使用指針
char* add(char* origText, char* paste)
{
char* pointerToOrigText = origText;
while (*pointerToOrigText!='\0')
pointerToOrigText++;
while (*paste!='\0')
*pointerToOrigText++=*paste++;
*pointerToOrigText='\0';
}
示例:origText = 「ABC」,糊= 「DEF」 功能之後:origText = 「ABCDEF」 ,paste =「def」
所以我把兩個字符串合併成一個。但是,使用此功能時:
char* add (char* origText,char *paste)
{
int newLength = strlen(origText) + strlen(paste)+ 1; // + '\0'
char* newText = new char[newLength]; // we want to make sure that 2 strings will fit.
char* pointerToNewText = newText; // pointer to char array where we will merge strings
char* helpPointer = origText; // helps us count until '\0'
while (*helpPointer!='\0')
{
*pointerToNewText=*helpPointer;
*pointerToNewText++; *helpPointer++;
}
while (*paste!='\0')
{
*pointerToNewText=*paste;
*pointerToNewText++; *paste++;
}
*pointerToNewText='\0';
origText = newText;
// cout <<origText<<endl;
}
外功能輸出是: origText = 「ABC」,貼= 「高清」 功能之後:origText = 「ABC」,貼= 「高清」
我我的書解釋說,這是因爲這條線:
char* newText = new char[newLength];
但我不明白。爲什麼在函數中分配內存會影響指針origText。
我希望你在origText中有足夠的內存,否則你會損壞內存。 – xanatos
請使用'std :: string'。您的整個函數定義可以使用它在單行中編寫。如果你的書推薦了你寫的方式,那麼選一本好書。 – Mahesh
@Mahesh +1這本書在很多層次上看起來不對 – stijn