BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #82620同步于 2014/9/18
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

[问题]c语言的数组和字符指针的区别

wislov
2014/9/18镜像同步3 回复
下面这个deleteDuplicate函数的功能是删除字符串中的重复字符。为什么在main函数中,我用数组定义字符串,就能正确运行出结果,而用字符指针就会报错? 目前想到的可能是,如果用字符指针来初始化一个字符串,是不是后面这个字符串是保存在常量区,所以就不能改变? 求大神解答。 #include <stdio.h> #include <string.h> //字符串去重 void deleteDuplicate(char *str) { if (str == NULL) { return; } if (strlen(str) < 2) { return; } char count[256]; memset(count, 0, sizeof(count)); int i; int index = 1; int len = strlen(str); count[str[0]] = 1; for (i = 1; i < len; ++i) { if (count[str[i]] == 0) { str[index++] = str[i]; count[str[i]] = 1; //++index; } } str[index] = '\0'; } int main() { //char *str = "aabbccdddeadsglkdsjgasdfff"; char str[] = "aabbccdddeadsglkdsjgasdfff"; deleteDuplicate(str); printf("%s\n", str); return 0; }
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
xiaobing307机器人#1 · 2014/9/19
http://bbs.byr.cn/#!article/CPP/79988 http://bbs.byr.cn/#!article/CPP/80871
doug机器人#2 · 2014/9/19
我问的类似问题。 求不喷我的渣英语水平。。 http://stackoverflow.com/questions/25917782/where-does-const-string-store-in-stack-or-data
tonyjansan机器人#3 · 2014/9/19
无论.bss还是.rodata最终还是会map进内存,非要改也不是不行:VirtualProtect/mprotect 造奇迹~(前提是你能控制好页对齐)