学习型 ASP/PHP/ASP.NET 主机 30元/年全能 ASP/PHP/ASP.NET 主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付
发新话题
打印

刚学的指针,请各位大侠帮我看看代码是哪写错了,

刚学的指针,请各位大侠帮我看看代码是哪写错了,

//编写一个C语言程序,使用指针交换两个数的值.
#include "stdio.h"
void main()
{  
  int a=3,b=5,*p,*q,*c;
  p=&a;q=&b;c=NULL;
  printf("a=%d,b=%d",a,b);
  
    *c=*p;
    *p=*q;
    *q=*c;    
    printf("交换后:a=%d,b=%d",a,b);
  
}

交换之后还是原样输出,请问是哪里错了?

TOP

a,b值没有变化,你只是交换了指向他们的指针,就像用两个带锁的盒子装两种糖,你只是把锁换了,而盒子里的糖没有变化

TOP

我也不明白,等高手。 2楼他不是交换的指针吧。

[ 本帖最后由 lzjd 于 2008-5-4 20:59 编辑 ]

TOP

程序居然没有当掉。。。。肯定用的TC。。。。。

C/C++讨论群:46520219 3996098 21035626 57909089
免费的C/C++算法学习论坛:http://yzfy.org

TOP

*c=*p;
    *p=*q;
    *q=*c;
c = p了
p = q  不就说明c =q吗?
q = c 他怎么换值?

[ 本帖最后由 lzjd 于 2008-5-4 21:18 编辑 ]

TOP

TOP

// 楼主你重复主题了


c=NULL;  // 这里有问题

*c = *p;   // 这样的话会把数据存入NULL处,这是错误的。

int temp;   // 定义一个零时变量
c = &temp;
—>〉Sun〈<—

TOP

// NULL 不是有效的地址 //
// NULL 不是int变量的地址, NULL 为常量 0
// c = NULL;  就是 c = 0; ( 或者说(void *)0 )

#include "stdio.h"

int main(void)       /* C标准 */
{
    int a = 3, b = 5, *p, *q, *c, temp;
    p = &a;
    q = &b;
    c = &temp;
    printf("a=%d,b=%d", a, b);

    *c = *p;
    *p = *q;
    *q = *c;
    printf("交换后:a=%d,b=%d", a, b);
    getchar();
    return 0;
}


[ 本帖最后由 cosdos 于 2008-5-4 21:40 编辑 ]
—>〉Sun〈<—

TOP

回复 10# 的帖子

getchar();

这句起什么作用的?我试了加不加这句都不影响结果

TOP

发新话题