C语言~ 不明白

[复制链接]
查看11 | 回复5 | 2009-8-3 20:18:53 | 显示全部楼层 |阅读模式
第一个程序 c=a;=a=b;b=c;\=a=b ; 出错还有 你把p=&x,p=&y; 这是你的本意么? 应该是p=&x,q=&y;才是你的本意吧 呵呵 ~~ 如果是 p=&x,q=&y那第一个程序应该是:先看 1.#include "stdio.h"void fun(int *a,int *b){ int *c;c=a;a=b;b=c;
\ 2. 所以a,b就是&x,&y,c=a;a=b;b=c; 这句话的意思就是把a,b里放的地址交换,则a指向了y,b指向了x;printf("%d%d",*a,*b);
\则打印出来的值是 5 3(看下面3.)}...
回复

使用道具 举报

千问 | 2009-8-3 20:18:53 | 显示全部楼层
围观,学习 据我刚刚试验了一下。发现,问题所在。第一问题。交换的是指针变量,而不是指针地址。也就是这个只是参形的变量交换,并没有交换地址。所以。他不会改变在主函数指向的数的值。这个就和形参只作用子函数,不作用于主函数一样的。注意他交换的是指针变量。而没有改变指针的地址。所以是53355335第二问。交换的是指针地址的指...
回复

使用道具 举报

千问 | 2009-8-3 20:18:53 | 显示全部楼层
请参看谭浩强C程序设计第二版,P207和P209。看过就明白了,再不明白,调试一下F11,看一下内存变化...
回复

使用道具 举报

千问 | 2009-8-3 20:18:53 | 显示全部楼层
第一个交换函数 交换了形参指针的数值 出了交换函数之后 实参指针不变所以没有起到交换效果所以在交换函数内的输出 是5 3 出来之后还是 3 5第二个交换函数 交换了形参指针所指向的数值,也就是实参指针指向的数值出了交换函数之后 实参指针的指向已被修改交换效果仍然存在所以 不管在交换函数内还是外 都是 5 3...
回复

使用道具 举报

千问 | 2009-8-3 20:18:53 | 显示全部楼层
又是你?貌似你在研究c语言嘛!这2个程序的区别在于一个是交换指针,一个是交换指针所指向的数据,变换指针时,他所指向的数据没变,所以不变,就像两个杯子,1号和2号,1号玻璃背:可乐,2号塑料杯雪碧,这两个程序相当于一个是输出交换12这两个号码后的分别杯子里的水,所以就成了53355335,还有一个是输出交换12号两个杯子后塑料的水和玻璃杯的水,但是水是没换的,...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行