第一章 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开始。

 

posted @ 2020-09-18 18:00  做一只热爱生活的小透明  阅读(142)  评论(0)    收藏  举报