指针参数的问题

来源:互联网 发布:魔兽传输数据遇到问题 编辑:程序博客网 时间:2024/04/29 11:56
#include <stdio.h>#include <stdlib.h>int f(int *ptr){ptr=(int *)malloc(sizeof(int));*ptr=999;return 0;}int main(){int *p,k=5;p=&k;f(p);printf("%d",*p);//5}

解决这个问题,有两种:

(一)利用函数返回值方法

#include <stdio.h>#include <stdlib.h>int *f(){int *ptr=(int*)malloc(sizeof(int));*ptr=999;return ptr;}int main(){int *p=f();printf("%d",*p);//999free(p);}
(二)利用指向指针类型的指针

#include <stdio.h>#include <stdlib.h>void f(int **ptr){*ptr=(int *)malloc(sizeof(int));**ptr=999;}int main(){int *p=NULL;f(&p);printf("%d",*p);//999free(p);//避免内存泄漏}

摘自《C语言点滴》215页

原创粉丝点击