P29_间接赋值是指针存在的最大意义

//它允许不同的函数操作同一块内存空间

//函数调用时,形参传给实参,用实参取地址,传给形参,在被调函数里面用*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级指针(实参)的值。

猜你喜欢

转载自blog.csdn.net/weixin_41983807/article/details/87893874