| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 345 人关注过本帖
标题:帮我看看这个程序
取消只看楼主 加入收藏
scott_dw
Rank: 2
等 级:论坛游民
帖 子:35
专家分:52
注 册:2011-8-30
结帖率:85.71%
收藏
已结贴  问题点数:20 回复次数:2 
帮我看看这个程序
程序代码:
/*
    目的:将指定范围元素复制到指定数组中。
*/

#include<stdio.h>

void copy_ptr(double *,double *,int);
int main(void)
{
    double source[8]={1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8};
    double target[3];//目标函数
    //int i;
    copy_ptr(&source[2],target,3);//把源数组的第3-5个元素复制到target。传递第三个元素的地址,目标函数的地址,以及复制元素数目
    return 0;
}


void copy_ptr(double *source,double * target,int n)
{
    int i;
    for(i=0;i<n;i++)
        *target++=*source++;
    for(i=0;i<3;i++)
        printf("%.2lf ",*target++);
    putchar('\n');
        
}


执行结果不是从source[2]开始复制,而是从头复制。
如果把输出函数 for(i=0;i<3;i++)
        printf("%.2lf ",*target++);
    putchar('\n');
放到main中,会出错
这是怎么回事?谢谢。
搜索更多相关主题的帖子: color 元素 
2011-09-03 14:32
scott_dw
Rank: 2
等 级:论坛游民
帖 子:35
专家分:52
注 册:2011-8-30
收藏
得分:0 
回复 2楼 dreamofgod
恩,对!
那如果把 for(i=0;i<3;i++)
    {
        printf("%.2lf ",*target);
        target++;
    }
    putchar('\n');
这部分放入主函数中是错误的,就是因为在主函数中,target是个常量,不能自加运算了?
2011-09-03 15:25
scott_dw
Rank: 2
等 级:论坛游民
帖 子:35
专家分:52
注 册:2011-8-30
收藏
得分:0 
回复 5楼 hanxiaokun
哦,不好意识。我想这个程序在命名上有些问题。
在主函数中的申明是:target[];所以target是个常量,而在下面的函数中,target做为形参,申明的是个指针变量。也就是,他们两个的作用域不同。
所以在主函数中,用target++是不对的。
所以我觉得这次在变量,常量的命名上不好,容易混。

[ 本帖最后由 scott_dw 于 2011-9-9 09:25 编辑 ]
2011-09-09 09:24
快速回复:帮我看看这个程序
数据加载中...
 
   



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

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