参考书籍《C++ primer plus》
当复制代码时,最好可能会出现代码错乱的问题,将CSDN换一个浏览器打开可能就行
1.cpp
#include <iostream>
int main()
{
//using namespace std;
using std::cout;
using std::endl;//遇上面的这种方法相同,只不过上面这种方法在进行大的程序编写的时候容易出现问题。
cout<< "come up to and C++ me some time";
cout <<endl;
cout<< "you't regret it!"<<endl;
return 0;
}
2.cin-cout.cpp
#include <iostream>
int main()
{
using namespace std;
cout <<"请输入您的年龄"<<endl;
int a ;
cin>>a;
a = a*12;
cout<<"该年龄包含"<<a<<"个月"<<endl;
return 0;
}
3_bool.cpp
#include <iostream>
int main()
{
using namespace std;
//bool is_ready = true;
bool is_ready;
is_ready = 100;//非零值会转化为ture,ture的值在计算机中存储的是1,false存储的是0;
cout<< is_ready;
return 0;
}
4_const.cpp
#include<iostream>
int main()
{
using namespace std;
const int number = 10;//const 定义一个常量,替代C语言中的#define,在定义常量后,常量的数值无法改变。
//number = 111;此语句错误,因为number为一个常量不可更改
cout<<number;
return 0;
}
5_string.cpp
#include<iostream>
#include<cstring>
int main()
{
using namespace std;
const int size = 15;
char name1[size];
char name2[size] = "hello world!";
cout<<name2<<endl;
cout<<"请输入字符"<<endl;
cin>>name1;
cout<<name1<<endl;
cout<<sizeof(name1)<<endl;
//sizeof表示一个数组的大小,当他后面跟的是一个数组名称的时候,输出的整个数组的大小
cout<<strlen(name1)<<endl;
//strlen只显示存储在数组中的字符串的长度,而不是数组本身的长度,另外strlen只计算可见的数组,不计算空字符
return 0;
}
6_cin_string_getline.cpp
/****************************************************
cin 当输入的名字有空格的时候,空格会被当做‘/0’处理,后面的字符串放在下一个的输入位置
cin.getline输入时不会遇到空格就停止,他遇到换行符时才会停止,但他会丢弃掉换行符
cin.get输入时也是遇到换行符停止,与cin.getline不同的是他不会丢弃掉换行符,此时需要进行其他的操作来弥补
***************************************************/
#include<iostream>
int main()
{
using namespace std;
const int size = 20;
char name[size];
char food[size];
cout<<"please input your name:"<<endl;
//cin>>name;
//cin.getline(name,20);
cin.get(name,20);
cin.get();
cout<<"please input what you like in foods:";
//cin>>food;
cin.getline(food,20);
cout<<name<<",your favorite food is "<<food<<endl;
return 0 ;
}
7_string.cpp
/*字符串类型的数据可以直接相加和相互赋值*/
#include<iostream>
#include<string.h>
int main()
{
using namespace std;
string s1 = "hello";
string s2 = " world";
string s4;
s4 = s2;
string s3 = s1+s2;
cout<<s1<<endl;
cout<<s2<<endl;
cout<<s3<<endl;
cout<<s4<<endl;
return 0;
}
8_string_n.cpp
/*
上述代码中使用了\\来显示\,因为当个\表示转义序列的第一个字符
另外,转义序列\" 表示双引号,而不是字符串结尾。
*/
#include<iostream>
#include<string.h>
int main()
{
using namespace std;
cout<<"Jim \"King\" used \"\\n\" inseaded of endl";
return 0;
}
9_structure.cpp
/*结构体数组的初始化以及调用*/
#include<iostream>
struct inflatable//结构体的创建
{
char name[20];
float volume;
double price;
};
int main()
{
using namespace std;
inflatable guests[2] =//结构体的初始化
{
{"lihaoyang",0.2,652.55},
{"sdfdsf",52335.252,4522.525}
};
cout<<guests[0].name<<endl;
cout<<guests[1].price<<endl;
return 0;
}
10_union.cpp
#include<iostream>
struct food
{
int price;
std::string name;
union id
{
int id_number;//共用体最多只能由一个赋值的初始项,共用体公用一段内存,每次只能访问其中的一个值。
char id_char;
}id_val;
}food1;
int main()
{
using namespace std;
cout<<"请输入编号"<<endl;
cin>>food1.id_val.id_number;
cout<<food1.id_val.id_number;
cout<<"请输入字符编号"<<endl;
cin>>food1.id_val.id_char;
cout<<food1.id_val.id_char<<endl;
cout<<food1.id_val.id_number<<endl;//这个语句不存在因为每次只能调用共用体的一个值
}
11_zhizhen.cpp
#include<iostream>
int main()
{
using namespace std;
int i = 5;
int j = 6;
int *p = &i;//将i的地址赋值给了p
cout<<*p<<endl;
cout<<p<<endl;
cout <<&j<<endl;
}
12_new_delete.cpp
#include<iostream>
int main()
{
using namespace std;
int *ps = new int;
cout<<ps<<endl;
*ps = 5;
cout<<*ps<<endl;
delete ps;//delete只是将ps指向的内存空间释放了,但仍指向之前的地址。
ps = NULL;//在将指针指向null时,才会将PS指针的指向清除
cout<<*ps<<endl;
return 0;
}
13_arrey_new_pointer
#include<iostream>
int main()
{
using namespace std;
double *p = new double[3];//动态数组的声明
p[0] = 0;
p[1] = 2;
p[2] = 8;
cout<<p[0]<<endl;
cout<<p[1]<<endl;
cout<<p[2]<<endl;
p = p+1;//添加之后p[0]会指向第二个元素(2),之后的会往统一向后推一个。指针加一指向的下一个元素
cout<<p[0]<<endl;
cout<<p[1]<<endl;
cout<<p[2]<<endl;//第三个指针的指向将会不知道去哪
cout<<*(p+1)<<endl;//指向的是第二个元素
cout<<*p+1<<endl;//如果不使用括号的话,是给*p 加上1
cout<<*p<<endl;//指向的是数组的首元素
cout<<p<<endl;//指向的是首地址
delete [] p;//释放动态数组的内存
return 0;
}
14_delete.cpp
#include<iostream>
#include<cstring>
int main()
{
using namespace std;
char *getname(void);
char *name;
name = getname();
cout<<name<<endl<<(int *)name<<endl;
/*一般来说,如果给cout提供一个指针,他就会打印地址,但如果指针的类型是char*,则cout将显示指向的字符串。
如果要显示字符串的地址,则必须将这种指针强制转化为另一种指针类型,如int*型*/
return 0;
}
char *getname()
{
using namespace std;
char temp[80];
cout<<"Enter your name"<<endl;//多注意看看这个函数
cin>>temp;
char *pn = new char[strlen(temp)+1];//利用这个函数可以很大程度上的减少存储的空间,及我们所说的动态存储。
strcpy(pn,temp);
return pn;
}