精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>C/C++>>C、C++语言基础>>指针变量可以做交换的中间变量吗

主题:指针变量可以做交换的中间变量吗
发信人: 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]

[关闭][返回]