发信人: chace()
整理人: wenbobo(2002-12-06 22:08:55), 站内信件
|
有一程序:main()
{static char *name[]={"Follow me","Basic",...};
sort (name,n);
...
}
void sort(name,n)
{char *name[];int n;char *temp;int i,k;
...
temp=name[i];name[i]=name[k];name[k]=temp;
...
}
这里的name[i],name[k]是地址,它的交换可以达到数值交换的目的.但为什麽可以
用指针temp作交换的中间变量?不是不可以的吗?我该怎麽理解?
-- ※ 修改:.chace 于 May 18 11:02:20 修改本文.[FROM: 202.96.190.71] ※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.96.190.71] 发信人: quentwu (沸冰), 信区: C 标 题: Re: 指针变量可作交换的中间变量吗? 发信站: 网易虚拟社区 (Tue May 18 11:36:20 1999), 站内信件
【 在 chace (小晴) 的大作中提到: 】
: 有一程序:main()
: {static char *name[]={"Follow me","Basic",...};
: sort (name,n);
: ...
: .......
是指针就可以了,C语言中的指针是很混乱的.不管类型的.
-- 你好,
我亲爱的溴酚兰.
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.101.11.15] 发信人: dunhill (澄溪露), 信区: C 标 题: Re: 指针变量可作交换的中间变量吗? 发信站: 网易虚拟社区 (Tue May 18 12:32:38 1999), 站内信件
【 在 quentwu (沸冰) 的大作中提到: 】
: 【 在 chace (小晴) 的大作中提到: 】
: : 有一程序:main()
: : {static char *name[]={"Follow me","Basic",...};
: : sort (name,n);
: .......
C和C++中的指针当然是有类型的。比如指向函数的指针你就不能指向
一个整型,指向两个整型参数的函数的指针不能指向一个参数的函数。
等等。
除非你用强制类型转换。
-- 人说北方的狼族,会在寒风起,站在城门外 穿着腐锈的铁衣,呼唤城门开,眼中含着泪
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 210.75.46.91] 发信人: crazyjava (骄傲的中国人), 信区: C 标 题: Re: 指针变量可作交换的中间变量吗? 发信站: 网易虚拟社区 (Tue May 18 13:24:29 1999), 站内信件
In this case,
all of temp, name[i] and name[k] point to the addresses.
u can think it as follows:
name[i] -> address A (In address A, there is a string "aa")
name[k] -> address B (In address B, there is a string "bb")
1) temp=name[i]; means temp -> address A
2) name[i]=name[k]; means name[i] -> address B
3) name[k]=temp; means name[k] -> address A
Therefore,
name[i] -> address B (In address B, there is a string "bb")
name[k] -> address A (In address A, there is a string "aa")
Normally, u can consider the value of a pointer, a address,
as an Integer. So in this case, it is just simple to exchange 2
integer values using temp as a medi-variable.
【 在 chace (小晴) 的大作中提到: 】
: main()
: {static char *name[]={"Follow me","Basic",...};
: sort (name,n);
: ...
: }
: void sort(name,n)
: {char *name[];int n;char *temp;int i,k;
: ...
: temp=name[i];name[i]=name[k];name[k]=temp;
: ...
: }
-- 孤身走我路...
其实,路,两个人一起走比一个人要好。
email: [email protected]
※ 修改:.crazyjava 于 May 18 15:48:37 修改本文.[FROM: 139.87.93.236] ※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 139.87.93.236] 发信人: tism (tism), 信区: C 标 题: Re: 指针变量可作交换的中间变量吗? 发信站: 网易虚拟社区 (Tue May 18 15:10:47 1999), 站内信件
【 在 chace (小晴) 的大作中提到: 】
: 有一程序:main()
: {static char *name[]={"Follow me","Basic",...};
: sort (name,n);
: ...
: .......
把地址看做一种数值就可以理解了。
-- ※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.96.48.5] 发信人: ken_qian (<marquee>杀意隆), 信区: C 标 题: Re: 指针变量可作交换的中间变量吗? 发信站: 网易虚拟社区 (Tue May 18 20:12:42 1999), 站内信件
【 在 chace (小晴) 的大作中提到: 】
: 有一程序:main()
: {static char *name[]={"Follow me","Basic",...};
: sort (name,n);
: ...
: .......
指针也是数据类型,和普通的数据是没有区别的
-- 杀意隆目中神光咋现,一向清澄的眼眸中竟闪现出三分歹毒,四分杀意。
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 210.175.4.210] 发信人: ycs830 (老山羊), 信区: C 标 题: Re: 指针变量可作交换的中间变量吗? 发信站: 网易虚拟社区 (Thu May 20 10:19:27 1999), 站内信件
很正常的地址交换啊,交换后两个字符串指针的地址换了,间接地起到了
交换内容的作用.相当于两个人的办公室中的所有东西不换,把两个人的办公
室交换,也相当于两个人的办公室内容换了,这比两个办公室搬东西方便.
-- ※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.96.79.44]
|
|