标题:新手求助,实现自己的printf函数 内存分配问题
取消只看楼主
tixi
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2016-3-24
结帖率:0
已结贴  问题点数:20 回复次数:3 
新手求助,实现自己的printf函数 内存分配问题
代码
 int myprintf(int a,int b,int c)
{   //int *p = &a;
     printf("a = %d\n",&a);
     //p--;
     printf("b = %d\n",&b);
     //p--;
     printf("c = %d\n",&c);
}
int main(void)
{
     myprintf(200,300,400);
}
结果
a = 0x7ffcb24080ec
b = 0x7ffcb24080e8
c = 0x7ffcb24080e4

这个内存地址是由大到小分配的,
用指针p--也能输出a,b,c.
如果把函数定义为int myprintf(const char *format,...)
那地址就直接没有规律了
请问这个问题是电脑的原因吗?
我在网上找别人的源代码来编译却又是可以的
搜索更多相关主题的帖子: 照片 源代码 网上 
2016-03-26 22:28
tixi
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2016-3-24
得分:0 
回复 2楼 hjx1120
把变量定义为不可变的
好像是这样吧
2016-03-27 01:42
tixi
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2016-3-24
得分:0 
回复 4楼 TonyDeng
我是看着视频学的,上面的代码是用来介绍这个函数实现的算法.就是函数的多个传参的地址是连续分配的,对指针进行++就可以得到各个参数.可是我的这个就直接卡这里了.后来我就照抄视频最后的代码,用到了va_list和 va_start这两个函数.居然就行了.这让我很迷惑
2016-03-27 19:31
tixi
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2016-3-24
得分:0 
回复 7楼 TonyDeng
非常谢谢你的解答.肯定是因为我什么地方理解错了,才会遇到这样的问题.我还是多看看书吧.
2016-03-27 20:57



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




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

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