| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1804 人关注过本帖
标题:新手求助,实现自己的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
快速回复:新手求助,实现自己的printf函数 内存分配问题
数据加载中...
 
   



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

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