第一章 C++语言简介
1.基本的输入/输出
#include <iostream> #include <string> using namespace std; int main(){ int oneInt1,oneInt2; char strArray[20]; string str; double oneDouble; char oneChar='a'; cout<<"输出两个整型值,一个字符,一个字符串和一个浮点值"; cout<<"以空格、Tab键或<Enter>键分割:"<<endl; cin>>oneInt1>>oneInt2>>oneChar>>strArray>>oneDouble; str=strArray; cout<<"输入的数据是:"<<endl; //endl的作用是换行 cout<<"字符串是:\t\t"<<str<<endl <<"两个整型值分别是:\t"<<oneInt1<<"和\t"<<oneInt2<<endl //\t是制表符Tab <<"字符是:\t\t"<<oneChar<<"\n" //"\n"是换行符,与endl效果相同 <<"浮点值是:\t\t"<<oneDouble<<endl; return 0; }
输出:

2.引用和函数参数的传递
#include <iostream> using namespace std; void SwapValue(int a,int b){ int tmp; tmp =a; a=b; b=tmp; cout<<"在SwapValue()传值函数中:\t\ta="<<a<<",b="<<b<<endl; } void SwapRef(int &a,int &b){ int tmp; tmp=a; a=b; b=tmp; cout<<"在SwapRef()引用函数中:\t\ta="<<a<<",b="<<b<<endl; } int main(){ int a=10,b=20; cout<<"数据交换前:\t\ta="<<a<<",b="<<b<<endl; SwapValue(a,b); cout<<"调用SwapValue传值()后:\t\ta="<<a<<",b="<<b<<endl<<endl; a=10; b=20; SwapRef(a,b); cout<<"调用SwapRef引用()后:\t\ta="<<a<<",b="<<b<<endl<<endl; return 0; }
输出:

解析:说明,值传递不会影响值,引用传参会改变值。
再举例说明:
#include <iostream> using namespace std; int a=10,b=20; int &refValue(int &x){ return x; } int main(){ refValue(a)=30; cout<<"a="<<a<<endl; refValue(b)=40; cout<<"b="<<b<<endl; return 0; }
输出:
a=30 b=40
3.const与指针共同使用
#include <iostream> using namespace std; int main(){ int a1=3; const int a2=a1; //a2=5;错的 cout<<"a2:"<<a2<<endl; int * a3=&a1; *a3=6; cout<<"2:"<<a3<<endl; const int * a4=&a1; //*a4=5; 错的 cout<<"3:"<<a4<<endl; int * const a5=&a1; *a5=10; cout<<"4:"<<a5<<endl; /* int const * const a6=&a1; cout<<"5:"<<a1<<endl; const int * const a7=&a1; cout<<"6:"<<a1<<endl; */ return 0; }
注意:
const修饰的不能被普通对象赋值
const int * p1; //指向整形常量的指针,所指向的值不能修改
int * const p2; // 指向整形的常量指针,不能再指向别的变量,但指向(变量)的值可以修改
const int * const p3; //指向整形常量的常量指针,既不能再指向别的常量,指向的值也不能修改。
4.函数的重载
#include <iostream> using namespace std; int bigger(int x,int y){ if(x>y) return x; else return y; } float bigger(float x,float y){ if(x>y) return x; else return y; } double bigger(double x,double y){ if(x>y) return x; else return y; } void main(){ int a=5,b=8; cout<<bigger(a,b)<<endl; }
输出结果:8
解析:函数的重载:同名且不同参数类型or 不同参数个数
拓展:调用函数时进行必要的类型提升
#include <iostream> using namespace std; double bigger(double x,double y) { if(x>y) return x; else return y; } int xl=10,yl=20; float xF=30,yF=40; double xD=50,yD=60; int main(){ cout<<bigger(xl,yl)<<endl; return 0; }
5.动态分配整型数组
int *aArray;//指向数组的指针 int i=5; pArray=new int[i*20]; //分配了100个元素的整型数组 pArray[0]=20;//数组的第一个值 pArray[99]=30;//数组的最后一个值
C++提供了delete运算符,用来释放动态分配的内存空间
删除指向整型数组的内存,需要使用delete [] p
6.用string 对象处理字符串
在程序中使用string对象,必须在程序中包含头文件string,即在程序的最前面,要加上如下语句:
#include <string> #include <iostream> using namespace std; int main(){ string str1;//声明string对象str1,值为空 string city="beijing"; //声明string对象city,并使用字符串常量进行初始化 string str2=city; cout<<"str1="<<str1<<endl; cout<<city<<","<<str2<<endl; char name[]="c++"; string s1=name; string citys[]={"chengdu","chongqing"}; cout<<citys[1]<<endl;//数组下标从0开始,如果写citys[3],会报错 cout<<sizeof(citys)/sizeof(string)<<endl;//输出数组元素个数 return 0; }
输出:
str1= beijing,beijing chongqing 2
分析:
最后一行语句将输出数组元素个数。citys是string对象数组,sizeof(citys)是整个数组占用的空间大小, sizeof(string)是每个string对象的大小,所以sizeof(citys)/sizeof(string)表示的是数组元素个数
7.String操作
#include <iostream> #include <string> using namespace std; int main(){ string s1,s2; s1="c++"; s2=s1; string s3; cout<<"s3="<<s3<<endl; s3=s1+s2; cout<<s1+s2<<endl; cout<<"s3="<<s3<<endl; s3+="de"; cout<<"s3="<<s3<<endl; bool b=s1<s3; //b为true cout<<"bool="<<b<<endl; //输出1 char c=s1[2]; cout<<"c="<<c<<endl; cout<<s1[2]<<endl; char arrstr[]="Hello"; s3=s1+arrstr; cout<<s3<<endl; return 0; }
输出:
s3= c++c++ s3=c++c++ s3=c++c++de bool=1 c=+ + c++Hello
解析:+号再字符串中是起连接作用,数组下标是从0开始。
善于跌倒仍喜爱奔跑~

浙公网安备 33010602011771号