나는이 코드를 삭제 연산자를 설명하기위한 C++ 입문서에서 가져 왔습니다. 그러나, 내가 이해할 수없는 것은 프로그램이 두 함수를 호출하는 방법과 그것들이 어떻게 상호 작용하는지에 관한 것이다.이 C++ 코드에서 함수는 어떤 방식으로 호출됩니까?
는 내가 이해하지 못하는 것은 어떻게 그리고 왜 "성을 입력 :"입니다Enter last name: Fredeldumpkin
Fredeldumpkin at 0x004326b8
Enter last name: Pook
Pook at 0x004301c8
:
// 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
}
이 책은 다음과 같은 샘플 실행을 제공, 두 번 실행 된 이유의 char *의 getname() 함수 int main() 전에 실행되었고 두 함수가 서로 상호 작용하는 방식입니다.
무서운 프로그램. 어떤 책을 사용하고 있습니까? –
아마추어 인 불완전한 위키 책 중 하나를 읽고 있지 않습니까? – ApprenticeHacker
'main'은'getname'을 두 번 호출하기 때문에 "Enter last name"이 두 번 표시됩니다. – birryree