一、c++统一初始化
C语言中初始化一个量只有赋值语句这一种办法
c++中初始化方式比较多
#include<iostream>
using namespace std;
int main()
{
int a = 10;//c语言中初始化只有赋值语句这一种方法
//以下都是c++初始化的方法
int b(10);//这样有点像对象初始化的形式
int c{ 10 };//int c = {20};
int d = int(10);
int e = int{ 10 };
return 0;
}
?在c++中,只要是初始化,都可以用{}初始化;
int main()
{
int ar[10] = { 1,2,3,4,5,6 };//数组初始化
int br[10]{ 1,2,3,4,5,6 };//也可以直接用{}初始化
int cr[] = { 1,2,3,4,5,6 };
int dr[]{ 1,2,3,4,5,6 };
int* ip = NULL;//指针初始化
int* s{ NULL };//也可以用{}直接初始化
return 0;
}
{}赋值时对类型的要求更为严格,必须是同一类型的才可以相互赋值
int main()
{
int a = 12.23;//ok赋值语句赋值时可以将类型不同的值互相赋值,只会警告,丢失精度
int b{ 12.23 };//error,{}初始化更为严格,直接报错,
return 0;
}
?指针和数组初始化
int main()
{
int a{ 10 };//变量初始化
int ar[5]{ 1,2,3,4,5 };//数组可以用{}初始化
ar{ 12,23,34,45,56 };//error,此时,数组名ar代表数组首元素地址
int br{ 12,23,34,45 };//error,此时系统判定br是一个变量,而不是数组
const char* sp = NULL;//定义指针sp
//以下两种方式赋值都是可以的
sp = "zyt";
sp = { "zyt" };
sp{ "zyt" };//error
const char* sb{ "zyt" };//但是用{}定义的时候初始化确是可以的。
}
二、输入输出
scanf 输入函数不会检查输入的数据是否越界,不安全
使用scanf_s可以防止数据越界。
c++中输入输出使用输入输出流函数cin? cout
cin >>(提取符)
cout<<(插入符)
|