我從C++入門書中得到了這段代碼,這本書是爲了解釋刪除操作符。但是,我不明白的是程序如何調用這兩個函數以及它們如何相互作用。在這個C++代碼中調用的函數是什麼方式?
// delete.cpp -- using the delete operator
#include <iostream>
#include <cstring> // or string.h
using namespace std;
char * getname(void); // function prototype
int main()
{
char * name; // create pointer but no storage
name = getname(); // assign address of string to name
cout << name << " at " << (int *) name << "\n";
delete [] name; // memory freed
name = getname(); // reuse freed memory
cout << name << " at " << (int *) name << "\n";
delete [] name; // memory freed again
return 0;
}
char * getname() // return pointer to new string
{
char temp[80]; // temporary storage
cout << "Enter last name: ";
cin >> temp;
char * pn = new char[strlen(temp) + 1];
strcpy(pn, temp); // copy string into smaller space
return pn; // temp lost when function ends
}
這本書提供了以下運行示例:
Enter last name: Fredeldumpkin
Fredeldumpkin at 0x004326b8
Enter last name: Pook
Pook at 0x004301c8
我不明白的是如何以及爲什麼「輸入名字:」被執行了兩次,爲什麼字符*的getName()函數在int main()之前被執行,以及這兩個函數是如何相互作用的。
多麼可怕的程序。你在用什麼書? – 2012-08-15 21:06:31
你不是在閱讀那些業餘不完整的維基書籍嗎? – ApprenticeHacker 2012-08-15 21:08:32
'main'兩次調用'getname',這就是爲什麼「輸入姓氏」顯示兩次。 – birryree 2012-08-15 21:09:07