标题:跨函数使用内存问题
取消只看楼主
hykj9495
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:796
专家分:1441
注 册:2016-6-6
结帖率:95.92%
已结贴  问题点数:10 回复次数:3 
跨函数使用内存问题
#include<stdio.h>
void f(int**q)
{
    int i=5;
    *q=&i;//*q=p=&i;
}
int main(void)
{
    int *p;
    f(&p);
    printf("i=%d\n",*p);
    return 0;
}
我这样理解可以吗?为什么说这个程序语法没错,逻辑有问题?
搜索更多相关主题的帖子: return 
2016-06-16 18:17
hykj9495
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:796
专家分:1441
注 册:2016-6-6
得分:0 
回复 3楼 lanke711
你的回答真仔细,谢谢了

慢慢调试
2016-06-16 20:27
hykj9495
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:796
专家分:1441
注 册:2016-6-6
得分:0 
回复 3楼 lanke711
#include<stdio.h>
int f(int **q)
{
    int i=5;
    *q=&i;
    return  **q;//*q=p,**q=*p=i的内容;
}
int main(void)
{
    int *p;
    int temp;
    f(&p);
    temp=f(&p);//地址是受限制的十六进制数,f(&p)接受的是地址,所以类型是int
    printf("i=%d\n",temp);
    return 0;
}
跨函数使用内存.exe - 0 error(s), 0 warning(s)
我自己摸索的,你所说的用*temp=f(&p)不能通过

慢慢调试
2016-06-16 21:19
hykj9495
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:796
专家分:1441
注 册:2016-6-6
得分:0 
我太菜了,大神所说听不懂

慢慢调试
2016-06-16 23:03



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-466034-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.531577 second(s), 10 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved