标签:style class blog code color get
#include<iostream> using namespace std; void getChar1(char *str); void getChar2(char *str); int main(void) { //字符指针用串常量初始化。分两步进行,首先申请堆空间,然后填入串值 char *str="I Love ShangHai";
//cin>>str; getChar1(str); getChar2(str); getchar(); } void getChar1(char *str) { while(*str!=‘\0‘) { cout<<*str; str++; } cout<<endl; } void getChar2(char *str) { int len=strlen(str); for(int i=0;i<len;i++) { cout<<str[i]; } cout<<endl; }
“I Love ShangHai” C++会自动在串常量加上‘\0’表示结束。‘\0’的ASCII码值为0,代表一个空操作。while(*str) 和while(*str!=‘\0‘)是一个意思。
字符指针必须必须先申请堆空间,然后才能填入值。看看下面程序会出现什么问题。
#include<iostream> using namespace std; void getChar1(char *str); int main(void) { char *str; cin>>str; getChar1(str); getchar(); } void getChar1(char *str) { while(*str!=‘\0‘) { cout<<*str; str++; } cout<<endl; }
f7成功编译。但是编译成功后运行时,直接奔溃。因为str 仅仅是一个字符指针,没有地方存输入的值。
#include<iostream> using namespace std; void getChar1(char *str); int main(void) { //字符指针用串常量初始化。分两步进行,首先申请堆空间,然后填入串值 char *str="I Love ShangHai"; cin>>str; getChar1(str); getchar(); } void getChar1(char *str) { while(*str!=‘\0‘) { cout<<*str; str++; } cout<<endl; }
f7成功编译。编译成功后运行f5,程序直接奔溃。正确做法应该这样......
#include<iostream> using namespace std; int main(void) { char *str=new char[80]; cout<<"输入一个字符串: "; for(int i=0;i<strlen(str);i++) { cout<<str[i]; } cout<<endl; delete []str; str=NULL; }
标签:style class blog code color get
原文地址:http://www.cnblogs.com/qianwen/p/3799560.html