| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1065 人关注过本帖
标题:一个变量居然能表示2种类型,求解
只看楼主 加入收藏
lockon
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2010-7-20
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:14 
一个变量居然能表示2种类型,求解
1#include "stdio.h"
2void print(char *name[],int n)
3{
4    int i;
5    for(i=0;i<n;i++)
6    printf("%s\n",name[i]);
7}
8void sort(char *name[],int n)
9{
10    char *temp;
11    int i,j,k;
12    for(i=0;i<n;i++)
13    {
14        k=i;
15        for(j=i+1;j<n;j++)
16            if(strcmp(name[k],name[j])>0) k=j;
17            if(k!=i)
18            {
19                temp=name[i];
20                name[i]=name[k];
21                name[k]=temp;
22                }
        }
    }
void main()
{
    char *name[]={"follow me","basic","great wall","fortran","computer design"};
    int n=5;
    sort(name,n);
    print(name,n);
}
上面的程序运行正常,但是有些地方实在不明白。
从第16行看,name[i]表示的是字符串;但是从19~21行和第10行看name[i]又表示的是指针;如此为什么没有错误呢?请高手不吝赐教,不胜感激。
搜索更多相关主题的帖子: 变量 类型 求解 
2010-07-21 19:19
mashrb
Rank: 2
等 级:论坛游民
帖 子:47
专家分:29
注 册:2010-6-30
收藏
得分:0 
我怎么看好像都是字符串指针??*name[]是一个指针型数组,其每一个单元都是一个指针。
2010-07-21 19:31
lockon
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2010-7-20
收藏
得分:0 
回复 2楼 mashrb
对,name[]是字符串指针。不明白的就是strcmp()是字符串的运算,为啥里面的参数是name[]。如果我做的话就改成strcmp(*name[k],*name[j])了
2010-07-21 19:35
mashrb
Rank: 2
等 级:论坛游民
帖 子:47
专家分:29
注 册:2010-6-30
收藏
得分:20 
strcmp()的参数可以是:"abcd"、和凡是可以代表地址的表达式(数组名、指针、对变量取址)。
收到的鲜花
  • lockon2010-07-21 19:46 送鲜花  3朵  
2010-07-21 19:42
lockon
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2010-7-20
收藏
得分:0 
回复 4楼 mashrb
我还以为strcmp()的参数只能是字符串,这样就明白了,非常感谢
2010-07-21 19:45
erikyo
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:270
专家分:1154
注 册:2010-6-10
收藏
得分:0 
楼主注意指针数组的是存放指针的数组,也就是说这个数组中的每一个元素都是一个指向字符串的指针。
而指针里存放的只是一个地址而已,在你的程序中存放的就是这些字符串的首地址。
还有strcmp()这个函数的原型是int strcmp(const char *p1, const char *p2),参数本来就是指针啊,
所以第16行的name[i]并不是字符串,他是指针数组的一个元素,是指针,里面存放的是指向子符串的首地址。
现在明白了把。。。。
2010-07-21 20:02
lockon
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2010-7-20
收藏
得分:0 
回复 6楼 erikyo
我又糊涂了,书上存在这种形式strcmp("China","Korea"),看这里的参数就是字符串,不是指针啊,是不是是2种参数都可以(4楼解释的那样)?
2010-07-21 20:56
okayyyy
Rank: 2
等 级:论坛游民
威 望:2
帖 子:102
专家分:70
注 册:2010-6-15
收藏
得分:0 
回复 7楼 lockon
.............. 字符串就是指针
哈哈。。。
2010-07-21 21:20
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
回复 8楼 okayyyy
有啥根据呀

我就是真命天子,顺我者生,逆我者死!
2010-07-21 21:21
carmeloyin
Rank: 3Rank: 3
来 自:西安
等 级:论坛游侠
帖 子:161
专家分:157
注 册:2008-12-2
收藏
得分:0 
8楼胡说八道
2010-07-21 23:11
快速回复:一个变量居然能表示2种类型,求解
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017750 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved