| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 657 人关注过本帖
标题:不是说*(*(a+0)+0)相当于值么?那为什么不能与*(*(a+0)+1)交换值呢?
只看楼主 加入收藏
月下漂泊
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2014-5-9
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:12 
不是说*(*(a+0)+0)相当于值么?那为什么不能与*(*(a+0)+1)交换值呢?
#include <stdio.h>
int main()
{
    char *a[]={"qa","da"},b[10];             我想把"qa"中换成"aq"
    if (*(*(a+0)+0)>*(*(a+0)+1))             这里*(*(a+0)+0)是'q',*(*(a+0)+1)是'a'
   {                                          我用b[0] 作为介质
    b[0]=*(*(a+0)+0);
    *(*(a+0)+0)=*(*(a+0)+1);                  运行到这一步就崩溃了
    *(*(a+0)+1)=b[0];
    }
    printf ("%c",*(*(a+0)+0));
    printf ("%c",*(*(a+0)+1));
}
不是说*(*(a+0)+0)相当于值么?那为什么不能与*(*(a+0)+1)交换值呢?
搜索更多相关主题的帖子: include 
2014-05-09 17:25
top398
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:427
专家分:857
注 册:2014-5-2
收藏
得分:10 
你在修改字符常量的内容,这是非法操作。
2014-05-09 17:51
月下漂泊
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2014-5-9
收藏
得分:0 
回复 2 楼 top398
是不是意思是说*(*(a+0)+0))和*(*(a+0)+1))固定是'a','b',而不能修改?
2014-05-09 17:56
kwxx
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:309
专家分:913
注 册:2009-5-11
收藏
得分:10 
二楼说的对,楼主你用二维数组来放这些串,就可以交换了。
2014-05-09 18:10
月下漂泊
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2014-5-9
收藏
得分:0 
谢谢,犯了一个错误!
2014-05-09 18:11
砖家的谎言
Rank: 12Rank: 12Rank: 12
等 级:禁止访问
威 望:30
帖 子:693
专家分:3898
注 册:2013-12-6
收藏
得分:0 
挺有意思的问题,又学习

我不是砖家,要努力成为砖家。
2014-05-09 18:15
top398
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:427
专家分:857
注 册:2014-5-2
收藏
得分:0 
但楼主为何要这样:
*(*(a+0)+0)
*(*(a+0)+1)
而不是这样:
a[0][0]
a[0][1]
如果说是要练习指针那也就罢了。
2014-05-09 18:27
top398
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:427
专家分:857
注 册:2014-5-2
收藏
得分:0 
或者:
**a
*(*a+1)
也是一样的。
2014-05-09 18:29
buddy_zhang
Rank: 2
等 级:论坛游民
帖 子:33
专家分:24
注 册:2014-5-7
收藏
得分:0 
#include <stdio.h>
int main()
{
    char a[][2]={"qa","da"},b[10];              
    if (*(*(a+0)+0)>*(*(a+0)+1))              
   {                                          
    b[0]=*(*(a+0)+0);
    *(*(a+0)+0)=*(*(a+0)+1);                  
    *(*(a+0)+1)=b[0];
    }
    printf ("%c",*(*(a+0)+0));
    printf ("%c",*(*(a+0)+1));
}
这样吧,我测试过,你之前的问题我看出了有两个:
(1)*(*(a+0)+0)=*(*(a+0)+1),这样的操作是在修改char型的常量指针,这是未定义的,只有极少数编译器允许这样。
(2)*(*(a+0)+0)这样的写法,我认为是数组指针的用法,而不是指针数组的用法。
(3)结合以上两点,我就把程序改成图中红色的部分。
2014-05-09 21:18
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:0 
回复 9 楼 buddy_zhang
char a[][2]={"qa","da"}    ????
2够吗?

总有那身价贱的人给作业贴回复完整的代码
2014-05-09 21:21
快速回复:不是说*(*(a+0)+0)相当于值么?那为什么不能与*(*(a+0)+1)交换值呢 ...
数据加载中...
 
   



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

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