//它允许不同的函数操作同一块内存空间
//函数调用时,形参传给实参,用实参取地址,传给形参,在被调函数里面用*p来改变实参,
把运算结果传出来
//c语言特有的现象,是c语言的精华
//主函数和被调函数之间通过内存交换运算结果
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <string>
using namespace std;
int getMem3(char **myp1, int *mylen1, char **myp2, int *mylen2)
{
int ret = 0;
char *tmp1, *tmp2;
tmp1 = (char*)malloc(100);
strcpy(tmp1,"1132233");
//间接赋值
*mylen1 = strlen(tmp1);//1级指针
*myp1 = tmp1;
tmp2 = (char*)malloc(200);
strcpy(tmp2,"aaaaavbddddd");
*mylen2 = strlen(tmp2);
*myp2 = tmp2;
return ret;
}
int main()
{
char *p1 = NULL;
int len = 0;
char *p2 = NULL;
int len2 = 0;
getMem3(&p1,&len,&p2,&len2);
cout << p1 << endl;
return 0;
}
//在函数调用时
用1级指针形参,去间接修改了0级指针(实参)的值。
用2级指针形参,去间接修改了1级指针(实参)的值。
用n级指针形参,去间接修改了n-1级指针(实参)的值。