| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1111 人关注过本帖
标题:关于指针的一个小题目,确总是执行时报内存出错。。很纠结!!!
只看楼主 加入收藏
kajj_0321
Rank: 2
等 级:论坛游民
帖 子:47
专家分:93
注 册:2013-10-23
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:26 
关于指针的一个小题目,确总是执行时报内存出错。。很纠结!!!
程序代码:
#include<stdio.h>
int main()
{
    char ca, ch, *p1, *p2, *s[4]={"nokia","apple","sansung","htc"};
    for(int i=0;i<4;i++)
    {
        p1=p2=s[i];
        ch=*(p1+i);
        while(*p1 != '\0')
        {
            printf("111111111111\n");
            if(*p1 != ch)
            {
            //    printf("%c\n",*p2);
            //    printf("%c\n",*p1);
                *p2 = *p1;
                p2++;
            }
            p1++;
        }
    }
}
我测试了下,程序是在进入if后执行不下去了,但是不知道为什么。求解惑!
2014-05-17 00:29
kajj_0321
Rank: 2
等 级:论坛游民
帖 子:47
专家分:93
注 册:2013-10-23
收藏
得分:0 
我是在vc6.0上编译运行的

kajj->1314 努力每一天。
2014-05-17 00:31
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
你这代码想干吗

DO IT YOURSELF !
2014-05-17 07:08
rmbking
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:36
专家分:157
注 册:2014-3-19
收藏
得分:0 
碰巧不久前遇到类似的问题,你声明的字符型指针指向的是字符串常量,则指针的内容是不可更改的!!因为被操作的是常量本身!!可改为声明字符数组,并用常量对其初始化,即将常量拷贝到数组中,则数组内容可以更改,即,将char *s[4]改为char[4][10]类似的形式。
不过不知道你的意图是什么,这样改会改变你的意图否?
2014-05-17 08:39
ditg
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:16
帖 子:852
专家分:1937
注 册:2014-4-10
收藏
得分:0 
*p2 = *p1;         p2 = p1;

如不合要求的话再说。

梦想拥有一台龙芯3A-4000
2014-05-17 11:41
茅十八
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:35
专家分:123
注 册:2014-3-11
收藏
得分:0 
char *s[4]={"nokia","apple","sansung","htc"} //  你定义的是指向字符串常量的指针的数组,
*p2=*p1;// 试图改变常量,当然不行啦。
要修改就参考下4楼的方法吧。

个人QQ:1789851851,有学习问题,欢迎找我讨论,另外Win32 SDK开发群:179492890
2014-05-17 12:00
砖家的谎言
Rank: 12Rank: 12Rank: 12
等 级:禁止访问
威 望:30
帖 子:693
专家分:3898
注 册:2013-12-6
收藏
得分:0 
最好不要连等赋值;还有就是你的指针数组的长度给的不够长。你可以换个5试试

我不是砖家,要努力成为砖家。
2014-05-17 12:04
kajj_0321
Rank: 2
等 级:论坛游民
帖 子:47
专家分:93
注 册:2013-10-23
收藏
得分:0 
回复 6 楼 茅十八
s[i]我觉得这样是可行的,这个程序是说明删除指定字符串中的字符。我改变不是地址,*s[i],代表的是指定字符串的第一个字符,*(s[i]+1)就是第二个字符,这个应该是不是常量没关系吧

kajj->1314 努力每一天。
2014-05-17 12:45
kajj_0321
Rank: 2
等 级:论坛游民
帖 子:47
专家分:93
注 册:2013-10-23
收藏
得分:0 
不要沉下来啊!求解答

kajj->1314 努力每一天。
2014-05-19 11:02
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用kajj_0321在2014-5-17 12:45:05的发言:

s我觉得这样是可行的,这个程序是说明删除指定字符串中的字符。我改变不是地址,*s,代表的是指定字符串的第一个字符,*(s+1)就是第二个字符,这个应该是不是常量没关系吧



说具体点  你想怎么删除字符  举例说明

DO IT YOURSELF !
2014-05-19 11:04
快速回复:关于指针的一个小题目,确总是执行时报内存出错。。很纠结!!!
数据加载中...
 
   



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

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