函数与指针
指针函数与函数指针
- 指针函数:函数的
返回值为指针类型
- 函数指针:
指向函数的指针
函数返回值类型为指针或者引用类型时
- 不能返回栈区的
内存地址或变量
- 函数的返回值为
引用类型时,函数调用可以作为左值
练习代码
int* GetMemory()
{
int *p = new int;
return p;
}
int* GetMemory1()
{
static int n = 100;
return &n;
}
char* GetMemory2()
{
char *pchar = "abcd";
return pchar;
}
int& GetN()
{
static int n = 100;
cout << n << endl;
return n;
}
typedef void(*PFun)(char*);
void test(char *p,PFun p1,char *p2)
{
cout << p << endl;
p1(p2);
}
void test(char *p)
{
cout << p << endl;
}
int main()
{
test("我去买包烟", test, "帮我买包槟榔");
int* (*pfun)() = nullptr;
pfun = GetMemory;
int(*pfun1[10])(int*);
int *p2=pfun();
cout << p2 << endl;
int n = 10;
n = GetN();
cout << n << endl;
GetN() = 20;
GetN();
int *p = GetMemory1();
if (p != nullptr)
{
*p = 10;
cout << p << endl;
cout << *p << endl;
}
p = GetMemory1();
if (p != nullptr)
{
*p = 20;
cout << p << endl;
cout << *p << endl;
}
char *pchar = GetMemory2();
cout << *pchar << endl;
cout << pchar << endl;
return 0;
}