c语言问题 指针数组 高手看看

[复制链接]
查看11 | 回复1 | 2011-5-14 09:22:01 | 显示全部楼层 |阅读模式
#includestdio.h
#includestring.h
voidmain()
{
char*p[5]={\"aaa\",\"bbb\",\"ddd\",\"ccc\",\"fff\"},*t;//把这行去掉换成/**/那几行自己输入为什么不行呢
/*        char*p[5],*t;*/
inti,j;
/*for(i=0;i5;i)*/
/*        gets(pi);*/
for(i=0;i4;i)
        for(j=i1;j5;j)
                if(strcmp(*(pi),*(pj))0)//这里地址怎么成了*(Pi)和*(pj)不是pi和pj吗
                {
                t=*(pi);
                *(pi)=*(pj);
                *(pj)=t;       
                }
                for(i=0;i5;i)
                        printf(\"%s\\n\",*(pi));
                //怎么这里是*(pi)输出如果是*(pi)是地址的话感觉地址的取值都一样了

}
回复

使用道具 举报

千问 | 2011-5-14 09:22:01 | 显示全部楼层
把这行去掉换成/**/那几行自己输入为什么不行呢
这是因为*p[5]里存的只是字串的地址,而不字串的本身
char*p[5]={\"aaa\",\"bbb\",\"ddd\",\"ccc\",\"fff\"}//先为字串分配存储空间后,再把字串地址赋给数组
相当于
char*a=\"aaa\";
char*b=\"bbb\";
…………
char*f=\"fff\";
char*p[5]={a,b……f}

if(strcmp(*(pi),*(pj))0)//这里地址怎么成了*(Pi)和*(pj)不是pi和pj吗
p是指针数组,*p才是存在指针数组中字串的地址。

//怎么这里是*(pi)输出如果是*(pi)是地址的话感觉地址的取值都一样了
*(pi)是指针数组p的内容,而这个内容表示的字串的地址,
是的,地址的取值都是一样的
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行