指针赋值
#include <stdio.h> #include <string.h> #include <stdlib.h> int getFilelen(int *p) { *p = 40; // p的值是a的地址 *a的地址间接修改a的值 } //return 只能返回一个结果 int getFilelen2() { int a = 100; return a; } //形参的属性 int getFilelen3(int b) //int b 只是具有对外的属性而已,能通过实参传递给形参的方式初始化b { //int b; 写在这儿也可以 b = 101; } //1级指针的技术推演 int main56(void) { int a = 10; int *p = NULL; //修改a的值 a = 20; //直接修改 p = &a; *p = 30; //p的值是a的地址 *就像一把钥匙 通过地址 找到一块内存空间 就间接的修改了a的值 printf("a: %d \n", a); getFilelen(&a); printf("a: %d \n", a); getFilelen2(); printf("a: %d \n", a); getFilelen3(a); printf("a: %d \n", a); //a和b没有任何关系 return 0; } void getMem(char **p2) { *p2 = (char *)300; //间接赋值 p2是p1的地址 } void getMem5(char *p2) { // char *p2; //写在里面和外面一样,写在外面只是具有对外的属性而已 p2 = (char *)400; //间接赋值 p2是p1的地址 } int main33(void) { char *p1 = NULL; char **p2 = NULL; p1 = (char *)0x11; p2 = (char **)0x22; //直接修改p1的值 p1 = (char *)0x111; //间接修改p1的值 p2 = &p1; *p2 = (char *)100; //间接赋值 p2是p1的地址 printf("p1:%d \n", p1); getMem(&p1); printf("p1:%d \n", p1); getMem5(p1); //不会改变p1的值 printf("p1:%d \n", p1); return 0; } int getMem3(char **myp1, int *mylen1, char **myp2, int *mylen2) { int ret = 0; char *tmp1, *tmp2; tmp1 = (char *)malloc(100); strcpy(tmp1, "12345667"); //间接赋值 *mylen1 = strlen(tmp1); //1级指针间接赋值 *myp1 = tmp1; //2级指针的间接赋值 tmp2 = (char *)malloc(200); strcpy(tmp2, "aaabbbccc"); *mylen2 = strlen(tmp2); //1级指针间接赋值 *myp2 = tmp2; //2级指针的间接赋值 return ret; } int main(void) { 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() error:%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; } return ret; }
函数调用时,形参传给实参,用实参取地址,传给形参,在被调用函数里面用*p来改变实参,把运算结果传出来
欢迎加入作者的小圈子
扫描下方左边二维码加入QQ交流群,扫描下方右边二维码关注个人微信公众号并,获取更多隐藏干货,QQ交流群:859800032 微信公众号:Crystal软件学堂
|
作者:Liu_Jing bilibili视频教程地址:https://space.bilibili.com/5782182 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在转载文章页面给出原文连接。 如果你觉得文章对你有所帮助,烦请点个推荐,你的支持是我更文的动力。 文中若有错误,请您务必指出,感谢给予我建议并让我提高的你。 |

浙公网安备 33010602011771号