| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 938 人关注过本帖
标题:简单程序错在哪里?
只看楼主 加入收藏
hmsabc
Rank: 2
来 自:贵州省兴义市
等 级:论坛游民
帖 子:97
专家分:19
注 册:2010-8-2
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:8 
简单程序错在哪里?
程序代码:
//指针作为函数参数--谭浩强《C++程序设计》第一版 P170页 例6.3
/*函数的参数不仅可以是整型、浮点型、字符型等数据,还可以是指针类型。它的作用是将一个变量的地址传送给被调用函数的形参*/


#include<iostream>
using namespace std;

int main( )
{
    void swap( int * p1,int * p2);                         //函数声明
    int * pointer_1,* pointer_2,a,b;                        //定义两个指针变量和两个整形变量
    cin >> a >> b;
    pointer_1 = &a;                                         //使 pointer_1 指向 a
    pointer_2 = &b;                                         //使 pointer_2 指向 b
    if( a < b) swap( pointer_1,pointer_2);                  //如果 a < b,使两指针互换
    cout << "max = " << a <<" " << "min = " << b <<endl;            //输出 a 和 b
    system("pause");
    return 0;
}

void swap(int * p1,int * p2)                                //函数的作用是将 * p1 的值与 * p2 的值交换
{
    int * temp;
    *temp = * p1;
    * p1 = * p2;
    * p2 = temp*;
}

运行出错,错在哪里呀?
搜索更多相关主题的帖子: color 
2010-08-15 10:26
weble
Rank: 2
等 级:论坛游民
帖 子:59
专家分:83
注 册:2009-4-12
收藏
得分:3 
temp是一个野指针,你不需要这么定义,直接使用int temp就可以了

路漫漫其修远兮,吾将上下而求索
2010-08-15 10:38
东海一鱼
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:48
帖 子:757
专家分:4760
注 册:2009-8-10
收藏
得分:3 
同意楼上。如果一定要用指针,可以如下:(很丑哦)

void swap(int * p1,int * p2)                                //函数的作用是将 * p1 的值与 * p2 的值交换
{
    int * temp;
    *temp = * p1;    //*(int*)&temp = *p1
    * p1 = * p2;
    * p2 = temp*;   //*p2 = *(int*)&temp;
}

举世而誉之而不加劝,举世而非之而不加沮,定乎内外之分,辩乎荣辱之境,斯已矣。彼其于世未数数然也。
2010-08-15 11:28
x88484532
Rank: 2
等 级:论坛游民
帖 子:34
专家分:30
注 册:2010-8-5
收藏
得分:3 
没看出3楼和1楼后面代码的不同啊?
2010-08-16 10:11
zgxyz2008
Rank: 4
等 级:业余侠客
帖 子:67
专家分:202
注 册:2008-10-28
收藏
得分:3 
void swap(int *p1,int *p2)                              
{
    int * temp=NULL;     //声明指针变量时应初始化;
    temp = p1;           //楼主指针变量赋值是错误的;
    p1 = p2;             //应该采用这种方法;
    p2 = temp;           
}
2010-08-16 10:54
哈哈帝王
Rank: 1
等 级:新手上路
帖 子:5
专家分:3
注 册:2010-8-9
收藏
得分:3 
void swap(int * p1,int * p2)                                //函数的作用是将 * p1 的值与 * p2 的值交换
{
    int * temp = new int;//你没有给他分配内存
    *temp = * p1;
    * p1 = * p2;
    * p2 = *temp;
    delete temp;
}

[ 本帖最后由 哈哈帝王 于 2010-8-17 13:04 编辑 ]
2010-08-17 12:54
cllpyl
Rank: 1
等 级:新手上路
帖 子:2
专家分:3
注 册:2010-8-17
收藏
得分:3 
顶五楼!
2010-08-17 21:14
ToBeOOP
Rank: 3Rank: 3
等 级:论坛游侠
威 望:3
帖 子:106
专家分:181
注 册:2010-7-8
收藏
得分:1 
如5楼的,交换指针地址不需要接触对指针的引用的。。。还有就是记得初始化指针。。。
2010-08-17 21:32
ycsky85
Rank: 1
等 级:新手上路
帖 子:4
专家分:3
注 册:2010-8-17
收藏
得分:1 
顶五楼,指针地址交换直接交换指针,*temp最好初始化
2010-08-17 21:59
快速回复:简单程序错在哪里?
数据加载中...
 
   



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

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