小人物学个大习(41-50)
C++ primer
列表初始化:要想定义一个名为units_sold的int变量并初始化为0,以下的4条语句都可以:
int units_sold = 0;
int units_sold ={0};
int units_sold{0};
int units_sold(0);
这种初始化的形式被称为列表初始化,如果我们使用列表初始化且初始值存在丢失信息的风险,则编译器将报错
long double ld=3.1415926;
int a{ld}; //错误,会造成信息丢失如果定义变量时没有指定初值,则变量被默认初始化,此时变量被赋予了“默认值”。默认值由变量类型,变量位置决定。
内置类型 函数体之外 0
函数体之内 不被初始化 未定义C++语言支持分离式编译机制,为了支持分离式编译,C++语言将声明和定义区分开来。声明使得名字为程序所知,一个文件如果想使用别处定义的名字则必须包含对那个名字的声明。而定义负责创建与名字关联的实体。变量声明规定了变量的类型和名字,在这一点上定义与之相同。但是除此之外,定义还申请存储空间,也可能会为变量赋一个初值。
如果想声明一个变量而非定义它,就在变量名前添加关键字 extern,而且不要显式地初始化变量:
extern int i;声明I
int j; 声明并定义j
任何包含了初始化的声明即成为定义可以通过前后缀、改变整型,浮点型和字符型字面值的默认类型。
字符和字符串
u char16_t
U char32_t
L wchar_t
u8 char utf-8
整型
U OR u unsigned
L or l long
LL or ll longlong
浮点型
f or F float
l or L long double用户定义的标识符中不能连续出现两个下划线,也不能以下划线紧连大写字母开头。此外,定义在函数体外的标识符不能以下划线开头。
约定俗成的命名规范:
标识符要能体现实际含义
变量名一般用小写字母 如 index
用户自定义的类名一般以大写字母开头如Sales_item
如果标识符由多个单词组成,则单词间应有明显区分,如student_loan 或 studentLoan作用域(scope)是程序的一部分,在其中的名字有其特定的含义。C++语言中大多数作用域都以花括号分隔。
同一个名字在不同作用域中可能指向不同的实体。
名字的有效区域始于名字的声明语句,以声明语句所在的作用域末端为结束。作用域能彼此包含,被包含的作用域称为内层作用域,包含着别的作用域的作用域称为外层作用域
int unique =42;
{
int unique =0;
cout<<::unique<<endl;
}
上述代码最终显示的是42
int i = 1;
int main()
{
int i =2, sum = 0;
// for(int i=0;i!= 10;++i)
// sum +=i;
{ int i =3;
cout<<::i<<endl;
}
return 0;
}
上述代码想显示的是1引用为对象起了另外一个名字,引用类型引用另外一种类型,通过声明符&来定义引用类型
不管学习的质量如何,总是要坚持学习。
2023年6月29日