| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 518 人关注过本帖, 1 人收藏
标题:关于指针和数组的问题 谢谢
只看楼主 加入收藏
刘暮哲
Rank: 2
来 自:江苏
等 级:论坛游民
帖 子:75
专家分:83
注 册:2009-9-25
结帖率:69.23%
收藏(1)
已结贴  问题点数:5 回复次数:7 
关于指针和数组的问题 谢谢
#include<stdio.h>
#include<string.h>
void main()
{
    char *s1,*s2,*s3;
    int i,j,n,m,x;
    printf("enter the string s1 and s2\n");
    scanf("%s %s",s1,s2);
    n=strlen(s1);
    m=strlen(s2);
    x=strcmp(s1,s2);
    if(x!=0)
    {
        printf("the two string\n");
        strcat(s1,s2);
    }
    else
        printf("the two string are not equal\n");
    strcpy(s3,s1);
    i=strlen(s3);
    printf("%s\n",s3);
    printf("the length of the s3 is:%3d\n",i);
    printf("%d %d\n",n,m);
}
这样不能运行  但是编译没有问题
我改成下面这样既可以运行  而且结果是正确的  请问是什么原因啊  指针和数组不是在某种意义上时一样的吗?
#include<stdio.h>
#include<string.h>
void main()
{
    char s1[10],s2[10],s3[30];
    int i,j,n,m,x;
    printf("enter the string s1 and s2\n");
    scanf("%s %s",s1,s2);
    n=strlen(s1);
    m=strlen(s2);
    x=strcmp(s1,s2);
    if(x!=0)
    {
        printf("the two string\n");
        strcat(s1,s2);
    }
    else
        printf("the two string are not equal\n");
    strcpy(s3,s1);
    i=strlen(s3);
    printf("%s\n",s3);
    printf("the length of the s3 is:%3d\n",i);
    printf("%d %d\n",n,m);
}
搜索更多相关主题的帖子: 指针 
2009-10-16 10:10
UserYuH
Rank: 12Rank: 12Rank: 12
来 自:毅华
等 级:火箭侠
威 望:8
帖 子:720
专家分:3300
注 册:2009-8-10
收藏
得分:0 
你的指针没指向一个可用的空间,怎么能对它进行操作呢。
定义成这样。
char *s1="          ",*s2="          ",*s3="                    ";
或定义三个数组再用指针指向。
或动态分配空间给指针。

努力—前进—变老—退休—入土
2009-10-16 10:44
m456m654
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:783
专家分:2806
注 册:2009-9-17
收藏
得分:0 
的确如楼上所说,如果只定义了指针而没有所指向的单元,在输入字符串时,就可能导致该字符串无法放到指针的存储单元里。
而且你的s1 s2所指向的单元的长度要大于你要存入的字符串的长度。

[ 本帖最后由 m456m654 于 2009-10-16 10:54 编辑 ]
2009-10-16 10:50
飞剑百步
Rank: 2
等 级:论坛游民
帖 子:8
专家分:24
注 册:2009-10-14
收藏
得分:0 
你的指针指向的是一个随机的地址单元,不一定指向s1 s2;
可以这样定义char *s1="          ",*s2="          ",*s3="                    ";
2009-10-16 10:55
pgy
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:C
等 级:小飞侠
威 望:8
帖 子:1248
专家分:2329
注 册:2009-9-23
收藏
得分:0 
再来补充:指针和数组元素在哪种程度上都不一样,就好比你家的门牌号和你家能一样么

我可好玩啦...不信你玩玩^_^
2009-10-16 17:06
刘暮哲
Rank: 2
来 自:江苏
等 级:论坛游民
帖 子:75
专家分:83
注 册:2009-9-25
收藏
得分:0 
那我这个问题  我就必须用指针来写  请问怎么写

做最好的自己
2009-10-22 11:15
huangtonggao
Rank: 1
等 级:新手上路
帖 子:3
专家分:5
注 册:2009-10-23
收藏
得分:0 
我来回答下,指针和数组作用一样是有前提的,指针必须是指向数组,你必须把数组的地址赋给指针
你如果定义
char a[100],b[100],c[100];
s1=a,s2=b,s3=c;

那么s1和s2就和数组等价了。
下面的程序不要改,就行了,实现了你这个程序必须用指针写的要求。

[ 本帖最后由 huangtonggao 于 2009-10-23 16:38 编辑 ]
2009-10-23 16:30
yuan5168
Rank: 1
等 级:新手上路
帖 子:4
专家分:1
注 册:2009-1-31
收藏
得分:0 
呵呵,大家都是高手啊
2009-10-23 20:26
快速回复:关于指针和数组的问题 谢谢
数据加载中...
 
   



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

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