|
间接赋值是指针存在的最大意义;间接赋值的工程意义!
函数调用时,形参传给实参,用实参取地址传给形参,在被调用函数里面用*p来改变实参,把运算结果传出来!
指针作为函数参数的精髓!是C语言的精华!
主函数和被调函数之间通过内存交换运算结果!
- #define _CRT_SECURE_NO_WARNINGS
- #include <stdlib.h>
- #include <string.h>
- #include <stdio.h>
- //间接赋值是指针存在的最大意义;间接赋值的工程意义!
- //指针作函数参数异常重要! 简单的分层:main()函数调用很多子函数 接口的封装与设计 软件工程
- int getMem3(char **myp1, int *mylen1, char **myp2, int *mylen2)
- {
- int ret = 0;
- char *tmp1, *tmp2;
- tmp1 = (char *)malloc(100);
- strcpy(tmp1, "309623978");
- //间接赋值
- *mylen1 = strlen(tmp1); //1级指针
- *myp1 = tmp1; //2级指针的间接赋值
- tmp2 = (char *)malloc(200);
- strcpy(tmp2, "东方老师微信:dfy_88888");
- *mylen2 = strlen(tmp2); //1级指针
- *myp2 = tmp2; //2级指针的间接赋值
- return ret;
- }
- int main(){
-
- int ret = 0;
- char *p1 = NULL;
- int len1 = 0;
- char *p2 = NULL;
- int len2 = 0;
- ret = getMem3(&p1, &len1, &p2, &len2);
- if (ret != 0)
- {
- printf("func getMem3() err:%d \n", ret);
- return ret;
- }
- printf("p1:%s \n", p1);
- printf("p2:%s \n", p2);
- if (p1 != NULL)
- {
- free(p1);
- p1 = NULL;
- }
- if (p2 != NULL)
- {
- free(p2);
- p2 = NULL;
- }
- printf("p1:%d \n", p1);
- system("pause");
- return ret;
- }
复制代码
|
|