c++字符串数组与字符串指针 c++ primer plus chapter 7 复习题8 的一点小问题
2015-04-08 20:12
501 查看
最近再看c++ primer plus ,做第7章复习题8时,发现自己写的与答案不一样,就顺便调试试了下,发现答案也是有问题的:
原题是:编写一个函数,把其中某一个字符都用另一个字符替换
贴出来代码,写起来还是很容易的
#include<iostream>
#include<string>
int replace(char str[],char c1,char c2);
using namespace std;
int main()
{
//char *wail="luualut"; // @1
char wail[]="luualut"; // @2
cout<<wail<<endl;
int n=replace(wail,'u','c');
cout<<wail;
cin.get();
}
int replace(char *str,char c1,char c2)
{
int n=strlen(str);
int count=0;
for(int i=0;i<n;i++)
//while(*str)
{
if(*str==c1)
{
*str =c2; //@3
count++;
}
str++;
}
return count;
}
函数声明的时候证实不论用字符串指针,或数组是一样的,当然这与书上的是一样的,但当主函数中用@1时 编译成功,运行就会出现写入错误,就会卡在@3处,找了很多说是指针指向空的等等,但都没有明白,也改不过来,后来看到http://blog.sina.com.cn/s/blog_4c70701801015n3t.html这篇博客才稍微明白点,声明指针字符串常量的时候,左边的变量是在栈中的,右边的字符串常量是在堆中,是不可更改的,所以当我们想更改里面的字符时就会出现写入错误,换成数组的定义方式,即@2的方式,就可以了,因为数组定义方式,左右都是在栈中,是可以修改的,更深的原因还是没理解太清,还有待继续学习。。。。。。
上面有两种循环方式,while明显简单更多,这应该就是思维差异,希望多锻炼,能有所提升。
原题是:编写一个函数,把其中某一个字符都用另一个字符替换
贴出来代码,写起来还是很容易的
#include<iostream>
#include<string>
int replace(char str[],char c1,char c2);
using namespace std;
int main()
{
//char *wail="luualut"; // @1
char wail[]="luualut"; // @2
cout<<wail<<endl;
int n=replace(wail,'u','c');
cout<<wail;
cin.get();
}
int replace(char *str,char c1,char c2)
{
int n=strlen(str);
int count=0;
for(int i=0;i<n;i++)
//while(*str)
{
if(*str==c1)
{
*str =c2; //@3
count++;
}
str++;
}
return count;
}
函数声明的时候证实不论用字符串指针,或数组是一样的,当然这与书上的是一样的,但当主函数中用@1时 编译成功,运行就会出现写入错误,就会卡在@3处,找了很多说是指针指向空的等等,但都没有明白,也改不过来,后来看到http://blog.sina.com.cn/s/blog_4c70701801015n3t.html这篇博客才稍微明白点,声明指针字符串常量的时候,左边的变量是在栈中的,右边的字符串常量是在堆中,是不可更改的,所以当我们想更改里面的字符时就会出现写入错误,换成数组的定义方式,即@2的方式,就可以了,因为数组定义方式,左右都是在栈中,是可以修改的,更深的原因还是没理解太清,还有待继续学习。。。。。。
上面有两种循环方式,while明显简单更多,这应该就是思维差异,希望多锻炼,能有所提升。
相关文章推荐
- 【原创】一起学C++ 之指针、数组、指针算术 ---------C++ primer plus(第6版)
- c++ primer plus阅读笔记3---指针问题
- C++ Primer Plus 札记(一) 数组,字符串和string
- C++ Primer Chapter 9 利用内置数组中一对指针初始化容器
- C++ Primer Plus Chapter 2 2.6复习题答案
- C/C++字符串,字符数组,字符指针及其相互静态拷贝与追加的安全问题解决方案(1)
- C_PlusPlus学习笔记 - 5_数组、指针和字符串 (C++语言程序设计【第三版】 郑莉等,清华大学出版社)
- C++:C++primer plus 指针问题理解
- c++ primer plus 第五版 第七章 编程练习 第 8 题 (字符数组转成字符串,trim使用,判断空行)
- C/C++字符串,字符数组,字符指针及其相互静态拷贝与追加的安全问题解决方案(2)
- C++动态数组,多重指针问题
- C++ [ 数组,指针,字符串 ]
- [原创]C/C++中复杂指针声明&&数组名的一点小事
- char*数组(c类型字符串)和c++中的string的转换、字符串比较、char*数组等问题
- 【C Prime Plus】学习笔记,Chapter 10,数组和指针之四
- C++利用指针数组和快排对输入的字符串进行排序
- 【C Primer Plus】第十章 数组和指针(二)
- C语言 复杂指针的申明问题 数组指针 指针数组 函数指针 指针函数一览无遗! C/C++求职面试必备考点(四)
- C/C++(字符串处理)字符指针、字符数组用法大总结
- 纯C语言中数组、指针、字符串问题