重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

c++相比较c特有的-创新互联

文章目录
  • 前言
  • 一、输入输出
    • 1.语法
    • 2.格式化
  • 二、函数
    • 1.函数的默认参数(缺省参数)
    • 2.函数重载
    • 3.函数模板
  • 三、寄存器变量
  • 四、内部函数和外部函数
    • 1.内部函数
    • 2.外部函数
  • 五、数组
    • 1.数组的长度
    • 2.多维数组
    • 3.数组的引用
    • 4.函数中数组参数传递
  • 六、字符串
    • 1.以字符数组储存
    • 2.输入输出
    • 3.string.h
    • 4.string 对象

成都创新互联公司总部坐落于成都市区,致力网站建设服务有成都网站建设、成都网站设计、网络营销策划、网页设计、网站维护、公众号搭建、微信平台小程序开发、软件开发等为企业提供一整套的信息化建设解决方案。创造真正意义上的网站建设,为互联网品牌在互动行销领域创造价值而不懈努力!
前言

  C++是由C语言演变出来的,那么C++有什么特别的呢?
这篇文章主要写C++相比较C语言的特别之处。


一、输入输出 1.语法
cin>>m>>n;
cout<
2.格式化

基本简单实验代码

#include#includeusing namespace std;
int main()
{bool m;
    double x,y,z,f;
    float f1;
    int a,b,c;
    cin>>boolalpha>>m;  //输入:true 
    cout<>oct>>a>>hex>>b>>dec>>c;  //输入:23 D2 -9
    cout<>x>>y>>f>>f1; //输入:3.14 0.1e1 3.1415926 0.1
    cout.precision(5);  //按浮点数形式输出 
    cout<

查看详细简洁全面格式化请移步
link(C++ 数据格式化)

二、函数 1.函数的默认参数(缺省参数)

(1)在声明或者定义函数的时,为形参指定默认值,叫做默认参数;
(2) 分类:半缺省参数(形参不全部指定默认值)、全缺省参数(形参全部指定默认值)
(3)在半缺省参数情况下,默认参数放在参数列表的最后面;
  上代码

#includeusing namespace std;
int func(int x=2,int y=3)
{return x+y;
}
int main()
{int a=3,b=9;
 int k;
 k=func(a);  //输出为3+3=6 
 //k=func(a,b) 输出为 3+9=12 
 //k=func()  输出为2+3=5 
 	cout<

(4)缺省参数不能再函数声明和函数定义中同时出现,必须二选一;
(5)默认参数必须是常量、全局变量、函数调用,不能是局部变量;

2.函数重载

(1)定义:在同一个域中用同一个函数名来定义不同的函数,要求函数参数的类型、数量、返回值类型不同;
(2)优点:在编程中会遇到几个函数的功能差不多,但是参数不同,例如add,将不同类型的参数进行add,如果是C语言可能要对函数命名add1,add2,add3,令人看的头大。
  更加注意不要将功能不一样的函数声明成重载函数,以免误解和混淆。
上代码

int add(int a,int b);
double add(double a,double b);
double add(int a, int b,double c);
3.函数模板

1.定义:独立于类型的函数,可做为一种模式,产生函数的特定类型版本;根据数据类型,自动实例化。
2.实质:同一个函数体,可以给不同类型数据使用;相当于函数重载的数量相同,类型不同的进步。
3.函数模板定义语法形式是:

template<模板形参表>返回类型 函数名 (形参列表)
{
  函数体
}

上代码

#includeusing namespace std;

templateT abs(T a)  //用T表示数据类型,也可用其他表示
{return a>0?a:-a;
}

int main()
{int a=-3;
   double b=2.3;
   cout<

4.模板形参表
(1)定义:用尖括号< >括起来,来表示一个或者多个模板形参的列表;
(2)表示< >之间不允许为空,多个形参之间用 ,逗号隔开;
(3)两种形式:

template< typename 类型参数名1 ,typename 类型参数名2>
template< class 类型参数名1,class 类型参数名 2 >

一般用第一种typename,第二种class与面向对象 类重复,容易混淆

三、寄存器变量

可以储存在CPU寄存器中的局部变量

register 数据类型 变量名称
register int a

特点是运行速度快,但是寄存器的空间是有限的,考量一下要不要用,别等需要的时候,没有空间了

四、内部函数和外部函数 1.内部函数

static 返回值类型 函数名 (形参)
{
  函数体
}

适用于多个文件的程序,内部函数的意义是只能本文件使用,在连接检查的时候不会出现函数名不唯一的情况,多个人编写同一个程序时常用的策略。

2.外部函数

extern 返回值类型 函数名(形参)
{
  函数体
}

在程序中基本都是外部函数,extern可以省略

五、数组 1.数组的长度

数组的长度是一个常量,不能用变量,长度不能改变

2.多维数组

多维数组初始化的时候,第一个长度可以省略,但是后面的不能省略,因为编译器可以根据数组的元素个数自动判断出来第一个长度

int a[ ][2][3] ={1,2,3,4,5,6,7,8,9,10,11,12} //正确
int a[2][ ][3]={1,2,3,4,5,6,7,8,9,10,11,12} //错误
int a[2][2][3]={1,2,3,4,5,6,7,8,9,10,11,12} //正确

3.数组的引用

不能对整个数组进行引用,赋值
可以对单个数组元素变量进行引用、赋值

4.函数中数组参数传递

(1)数组为函数形参的时候

double max(double a[10] ) //即数组类型、数组名字、数组长度,长度可以省略

一维数组的时候,形参数组长度可以写,可以不写,可以与实参的数组长度相同或者不同;
多维数组的时候,第一维任意,但是其他维要与实参相同;
(2)实参传递数组名,数组的首地址传递到函数
(3)数组的形参实际上接收不到数组的长度,所以可以再设置一个形参来传递数组的长度

#includeusing namespace std;

int fcout(int a[],int n)  //数组的长度n
{int i=0;
	for(;icout<int a[5]={1,2,3,4,5};
	fcout(a,5);
	return 0;
}
六、字符串 1.以字符数组储存

(1)定义形式

char a[4]={‘a’,‘b’,‘c’,‘d’}

(2) 以’\0’结尾,\0是字符串结束的标志,遇到这个字符结束,
字符串实际存放在字符数组中,字符数组长度+1,来存储这个\0;
(3)字符串常量用“ ”表示,编译器自动再字符串最后加上\0空字符

2.输入输出

(1)标准输入输出流

char str[80];
cin>>str;
cout<

(2)字符串输入输出函数

  • 输入函数gets
    gets函数

char *gets (char *s);

gets函数原型即输入字符串到s中去,s是字符数组或是指向字符数组的指针,长度足够大,可以容纳很大的字符串

char str[80];
gets(str);  //输入字符串
  • 输出函数puts
    puts函数

char *puts(char *s);

puts函数输出s字符串,遇到空字符结束,最后输出一个‘\n’换行字符;
不输出字符串的最后的空字符.

char str[80]="指针不指南吗";
gets(str);  //输出字符串
3.string.h
  • 字符串复制函数strcpy

char str1[10] , str 2=“computer”;
strcpy(str1,str 2) ; //复制str2到str1,包括最后的\0

  • 字符串复制函数strncpy

char str1[10] , str 2=“computer”;
strncpy(str1,str 2,4) ; //复制str2前4个字符到str1,补\0

  • 字符串连接字符 strcat

char str1=“ABC” , str 2=“123”;
strcpy(str1,str 2) ; //把str2连接到str1后面,包括\0,str 2没有变化

  • 字符串连接字符 strncat

char str1=“ABC” , str 2=“123456”;
strcpy(str1,str 2,4) ; //把str2前4个字符连接到str1后面

  • 字符串比较函数strcmp
    从第一个字符开始依次比较字符的ASCII值

if(strcmp(str1,str2)==0)… //比较字符串相等
if(strcmp(str1,str2)>0)… //比较str1大于str2

  • 计算字符串长度函数strlen
    计算的是数组中实际字符串的长度,而不是数组元素的个数

n=strlen(“computer”) //n=8,不包含\0
char string[20]=“love computer”;
n=strlen(string); //n=13

  • 字符串转换成数值的函数

f=atof(“123.45”); //f=123.45,把字符串转化成一个float数据
i=atoi(“-456”); //i=-456,把字符串转化成一个int数据

4.string 对象

(0)需要包含头文件

#include //不能写成string .h

(1)字符串对象的定义和初始化
和变量相似,如果string没有初始化则一律为空字符串,注意string不需要NULL结尾

char str[20]; //C风格定义
string str1; //定义string对象
string sx,sy,sz; //定义多个string对象
char str[20]=“computer”; //C风格初始化
string str1=“computer”; //string对象复制初始化
string str1(“computer”); //string对象直接初始化

(2)string对象的引用
与变量相似,直接引用string对象名即可

str1=“computer” ; //直接使用string

(3)string对象的输入输出

cin>>str1; //输入字符串到string对象中存放
cout<gets(str1); //c风格字符串输入输出
puts(str1);

(4)字符串的运算

  • 加法赋值:+ =

string st1=“AB”,str2=“12”;
str=str1+str2;//str=“AB12”;
str1+=str2; //str=“AB12”;
str1=str1+“aph”; //str1=“ABaph”;

  • 关系运算

str1=“AB”,str2=“12”;
str1>str2;结果为假;
str1== str2;//jia;
str1=="ABC“

(5)其他对它的成员函数进行操作
程序中顺序都是从0开始的
形式如下

str1="ABCDEF";
n=str1.size();//n=7;
n=str1.length();//n=7;
b=str1.empty();//b为假,判断字符串是不是空字符串bool
//得到子字符串
str2=str1.substr(2,4);//从第2个字符开始的4个字符;str2="CDE";
//查找字符串
n=str1.find("DEF",pos);  //从pos开始查找字符串"DEF"在字符串str1中的位置,返回开始的位置,n=3;
//删除字符
str1.erase(1,2);   //从第1个字符开始的后2个字符删掉,str1="ABEF";
//增加字符
str1.append("123456",1,3);//
//字符串的替换和插入
str1.replace(p0,n0,S1,n);  //删除str1从p0开始的n0个字符,在p0处插入字符串S1的前n个字符;
str1.replace(p0,n0,str2,pos,n);  //删除str1从p0开始的n0个字符,在p0处插入字符串str2从pos开始的前n个字符;













你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


新闻标题:c++相比较c特有的-创新互联
文章位置:http://cqcxhl.cn/article/ipeic.html