跨函数使用内存

来源:互联网 发布:java什么是源代码 编辑:程序博客网 时间:2024/05/02 02:26
#include<stdio.h>
#include<malloc.h>

void f(int ** q){
    int j=20;
    *q=&j;
}

int main(){
    int *p;
    f(&p);    
    return 0;
}

可行

#include<stdio.h>
#include<malloc.h>
int * f()
{
    int *q=(int *)malloc(sizeof(int));
int j=20;
q=&j;
return q;
}
int main()
{
    int *p;
    p=f(); 
    printf("%d", *p);
    return 0;
}

f函数开辟一个q指针,指向j,函数结束后,动态开辟的内存并没有释放。成功

#include<stdio.h>
#include<malloc.h>

void f(int * q){

    int j=20;
    q = (int *)malloc(sizeof(int));

    q = &j;
}

int main(){
    int *p;
    f(p); 
printf("%d", *p);
    return 0;
}

不行


#include<stdio.h>
#include<malloc.h>

void f(int ** q){
    *q = (int *)malloc(sizeof(int));
    **q = 20;
}


int main(){
    int *p;
    f(&p); 
   printf("%d", *p);
    return 0;
}

按址传递,可行

0 0
原创粉丝点击