| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 347 人关注过本帖
标题:字符串指针问题!
只看楼主 加入收藏
liangjinchao
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:376
专家分:697
注 册:2010-11-8
结帖率:97.44%
收藏
已结贴  问题点数:10 回复次数:4 
字符串指针问题!
以下是引用默默学习在2011-3-28 19:24:17的发言:

楼主这题问的好。
这一题,个人观点:字符串数组 与 字符串指针 它们两引用的概念你没搞清楚。
1.按你用缺省字符数组来引用"yes"和"no"字符串是可行的。
问题:这里的main函数中的p1,p2为什么不能改成指针*p1,*p2呢?
解决:因为当p1,p2作为字符串指针来引用的时候,.
    错误1. 子函数copy形参不能用指针来承接指针变量地址.,我们知道,只有指向指针的指针,才能引用.所以这里应该使用 **s1,**s2来充当形参变量.
    错误2. 你要了解,字符数组是可以取内容和改变内容的,而字符串指针它只是指向数组的指针懂吗!它仅仅只是指向这串字符串的首地址!,
所以在这个子函数中,你可以直接改变交换的指针指向,具体思路,如下代码:

#include "stdio.h"
void copy(char **s1,char **s2)
{
    //用一级指针来承接,因为这里如果再用指向指针的指针来引用,会导致值重复,就好比:指针间接改变变量值的关系一样。
    char *sp;
    sp=*s1;
    *s1=*s2;
    *s2=sp;
}
main()
{
    char *p1="Yes",*p2="No";
    copy(&p1,&p2);
    printf("p1=%s\np2=%s\n ",p1,p2);
}
我想请教一下这句:子函数copy形参不能用指针来承接指针变量地址.,我们知道,只有指向指针的指针,才能引用.         就是为什么子函数copy形参不能用指针来承接指针变量地址,为什么只有指向指针的指针才能引用!    刚学到指针,所以对这种概念还是比较模糊!
搜索更多相关主题的帖子: 字符串 
2011-03-29 21:46
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:0 
迷茫ing~~~

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-03-29 22:06
liangjinchao
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:376
专家分:697
注 册:2010-11-8
收藏
得分:0 
回复 2楼 ansic
努力

因为有了因为,所以有了所以,既然已成既然,何必再说何必
2011-03-29 22:09
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:0 
以下是引用liangjinchao在2011-3-29 22:09:44的发言:

努力!

]

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-03-29 22:20
autumn1202
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:64
专家分:553
注 册:2011-2-21
收藏
得分:10 
因为传入的参数是指针的地址么,lz就考虑下用什么来保存地址,char *p肯定是不行,因为这里的p应该指向字符串的地址,而不是指针的地址
为了方便lz理解,考虑到目前大部分指针地址都是四个字节,跟int相同,可以这样处理:

程序代码:
#include "stdio.h"
void copy(int *s1,int *s2)
{
    //用一级指针来承接,因为这里如果再用指向指针的指针来引用,会导致值重复,就好比:指针间接改变变量值的关系一样。
    int sp;
    sp=*s1;
    *s1=*s2;
    *s2=sp;
}
main()
{
    char *p1="Yes",*p2="No";
    copy((int *)&p1,(int *)&p2);
    printf("p1=%s\np2=%s\n ",p1,p2);
}

用int类型的指针来存储指针的地址,当然这样处理并不适合所有的编译器,真正通用的还是要用指针的指针
2011-03-30 14:50
快速回复:字符串指针问题!
数据加载中...
 
   



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

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