幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2225|回复: 4

[通用编程] 再问两指针数组

[复制链接]

313

主题

1574

帖子

1万

积分

⑧专业

*永恒国度*

积分
14145
QQ
发表于 2007-8-16 23:00:31 | 显示全部楼层 |阅读模式
再问两个程序,如下:
#include<string.h>
void main()
{
    char *string[3]={"data structure","computer design","c language"};
    char **p1,**p2,*p;
    p1=&string[0];p2=&string[1];
    if(strcmp(*p1,*p2)>0)
    {
        p=*p1;*p1=*p2;*p2=p;
    }
    p2=&string[2];
    if(strcmp(*p1,*p2)>0)
    {
        p=*p1;*p1=*p2;*p2=p;
    }
    p1=&string[1];
    if(strcmp(*p1,*p2)>0)
    {
        p=*p1;*p1=*p2;*p2=p;
    }
    for(i=0;i<3;i++)
        printf("%s\n",string);
}

---------------------------------------------------------------------------------------------------------------
#include<string.h>
void main()
{
    char *string[3]={"data structure","computer design","c language"};
    char *p;
    int i;
    if(strcmp(string[0],string[1])>0)
    {
        p=string[0];string[0]=string[1];string[1]=p;
    }
    if(strcmp(string[0],string[2])>0)
    {
        p=string[0];string[0]=string[2];string[2]=p;
    }
    if(strcmp(string[1],string[2])>0)
    {
        p=string[1];string[1]=string[2];string[2]=p;
    }
    for(i=0;i<3;i++)
        printf("%s\n",string);
}
这样两对指针数组里面元素排序的程序,为什么第一个程序是实现string元素值的交换,而第二个程序只是实现指向的改变呢?  不是两程序都是实现指向的改变吗?[s:8]
[img][/img] http://shop33698673.taobao.com被别人嫉妒,证明你优秀,嫉妒别人说明你无能
回复

使用道具 举报

19

主题

842

帖子

1万

积分

⑧专业

絕望青年,一起增高吧

积分
13676
发表于 2007-8-17 11:07:58 | 显示全部楼层
首先,不會顯示正確答案
  printf("%s\\n",string);不合法,string是char**,但%s要求char*格式
成string

在第一個例中把*p1/*p2當成元素值便真是元素值交換

為著彼岸,便要與之妥協 但為著彼岸,更不能與之妥協

回复 支持 反对

使用道具 举报

313

主题

1574

帖子

1万

积分

⑧专业

*永恒国度*

积分
14145
QQ
 楼主| 发表于 2007-8-17 13:37:52 | 显示全部楼层
怎么会把*p1 当作值来交换呢?它不也只是地址吗? [s:8]
[img][/img] http://shop33698673.taobao.com被别人嫉妒,证明你优秀,嫉妒别人说明你无能
回复 支持 反对

使用道具 举报

20

主题

197

帖子

2641

积分

⑥精研

积分
2641
QQ
发表于 2007-8-17 22:13:50 | 显示全部楼层
数组在内存中是线性排列的...在第一个程序中的操作,导致线性地址排列被打乱了....所以说是改变了元素值
在第二个程序中是保持数组地址不变的情况下,改变了它们的指向顺序
可能理解起来比较复杂...不过画个图就容易了....
[s:5]
签名要少于60,SO,i haven't upload my pic
回复 支持 反对

使用道具 举报

19

主题

842

帖子

1万

积分

⑧专业

絕望青年,一起增高吧

积分
13676
发表于 2007-8-18 14:29:52 | 显示全部楼层
某不想畫圖。。。
簡單點內說,指標也可作為元素的感覺吧。。

為著彼岸,便要與之妥協 但為著彼岸,更不能與之妥協

回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2024-4-30 06:34 , Processed in 0.019888 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表