C++基础知识 day2
2018-03-19 14:43
309 查看
1.定义和声明// C++可以在任意位置定义变量,尽量减少变量的作用域 -----> 尽可能延迟变量的定义 -----> 什么时候用,什么时候定义
2.寄存器变量// 申请一个寄存器变量,变量不存在内存中,
// 而是直接存在寄存器中
// 请求,请求不一定能够成功register int b = 20;// C++中 如果对一个寄存器变量进行取地址操作
// register 声明将变的无效,编译器将这个又放回内存中3.结构体struct Student
{
int id;
char name[20];
};int main()
{
// C语言中结构体不认为是一个新的数据类型,只是数据的集合
struct Student s; // C++中认为结构体是一个新的数据类型,可以直接来定义变量
Student s1; return 0;
}4.新增BOOL类型
// bool类型:只有两个值,真(true)和假(false)
// 真(true)值是1, 假(false)值是0// 如何判断 真和假
// 真:所有非0都是真 真的值是1
// 假:0 是假// 判断真
if (b)// 判断假
if (!b)5.三目运算符 int c = a>b ? a : b;// C++三目运算符可以作为左值来使用
// C++三目运算符返回的是变量本身
(a>b ? a: b) = 0; // *(a>b ? &a : &b) = 0;
// 如果将三目运算符作为左值来使用,则表达式中不能存在常量
// (a>b ? a: 30) = 23; // *(a>b ? &a : &30) = 23;
6.const
// C++ 中的const 修饰变量,则变量将会变量一个常量
// 常量在内存中是没有分配空间的
// 编译器有一个符号表用来存储常量的 const int a = 10;
// 如果对有一个const常量进行取地址操作,编译器会为这个const常量分配一个空间
// const 常量并不会使用这块空间
int *pa = (int*)&a;
*pa = 20;
7.引用
// a 是变量名 代表一块 4字节的空间 空间内的值是10
// 这块 空间 能不能起另一个名字? -----> 引用
int a = 10; // 引用 :类型 &别名 = 原来的变量名
// b 是 a 的引用,也就是 a 所代表的4字节空间的别名
// 现在, a 和 b 代表的是同一块空间
// 对 b 的操作就是对 a 的操作, 对 a 的操作就是对 b 的操作
int &b = a;// 引用:在一定场合 用来替换指针
void swap(int &a1, int &b1)
{
int tmp = a1;
a1 = b1;
b1 = tmp;
}// 引用变量必须要初始化// 复杂数据类型做参数传递的时候,不要直接传变量
// 传指针void print(Student *ps)
// 传引用
void print1(Student &s1)// 函数返回值返回一个引用: 不能返回一个栈上变量的引用
// 可以返回的引用:全局变量、静态变量、堆上的变量....
int &func()
{
static int a = 10;
printf ("a = %d\n", a);
return a;
}8.引用本质和常引用
// 引用:占4字节空间(指针) 必须要初始化(const 常量)
// ======> 引用的内部实现 const 常量指针
// int &b = a =====> int *const b = &a
// 用引用的时候 都是 *pb 去替换
printf ("&b = %p\n", &b); // printf ("&b = %p\n", &*pb);
//常引用// 1、用变量对常引用进行初始化
const int &c = a; // const int * const pc = &a; // 2、使用常量对常引用进行初始化
// 引用是一个空间的别名 ----> 缺空间
// 编译器会为这个常量开辟新的空间,将这个常量的值赋值给这个空间
// 同时将 d 作为这个空间的别名
const int &d = 20; // const int * const pd = &20; // e 是一个常量,值永远都是 25
const int e = 25;
b = 20; // *pb = 20;
2.寄存器变量// 申请一个寄存器变量,变量不存在内存中,
// 而是直接存在寄存器中
// 请求,请求不一定能够成功register int b = 20;// C++中 如果对一个寄存器变量进行取地址操作
// register 声明将变的无效,编译器将这个又放回内存中3.结构体struct Student
{
int id;
char name[20];
};int main()
{
// C语言中结构体不认为是一个新的数据类型,只是数据的集合
struct Student s; // C++中认为结构体是一个新的数据类型,可以直接来定义变量
Student s1; return 0;
}4.新增BOOL类型
// bool类型:只有两个值,真(true)和假(false)
// 真(true)值是1, 假(false)值是0// 如何判断 真和假
// 真:所有非0都是真 真的值是1
// 假:0 是假// 判断真
if (b)// 判断假
if (!b)5.三目运算符 int c = a>b ? a : b;// C++三目运算符可以作为左值来使用
// C++三目运算符返回的是变量本身
(a>b ? a: b) = 0; // *(a>b ? &a : &b) = 0;
// 如果将三目运算符作为左值来使用,则表达式中不能存在常量
// (a>b ? a: 30) = 23; // *(a>b ? &a : &30) = 23;
6.const
// C++ 中的const 修饰变量,则变量将会变量一个常量
// 常量在内存中是没有分配空间的
// 编译器有一个符号表用来存储常量的 const int a = 10;
// 如果对有一个const常量进行取地址操作,编译器会为这个const常量分配一个空间
// const 常量并不会使用这块空间
int *pa = (int*)&a;
*pa = 20;
7.引用
// a 是变量名 代表一块 4字节的空间 空间内的值是10
// 这块 空间 能不能起另一个名字? -----> 引用
int a = 10; // 引用 :类型 &别名 = 原来的变量名
// b 是 a 的引用,也就是 a 所代表的4字节空间的别名
// 现在, a 和 b 代表的是同一块空间
// 对 b 的操作就是对 a 的操作, 对 a 的操作就是对 b 的操作
int &b = a;// 引用:在一定场合 用来替换指针
void swap(int &a1, int &b1)
{
int tmp = a1;
a1 = b1;
b1 = tmp;
}// 引用变量必须要初始化// 复杂数据类型做参数传递的时候,不要直接传变量
// 传指针void print(Student *ps)
// 传引用
void print1(Student &s1)// 函数返回值返回一个引用: 不能返回一个栈上变量的引用
// 可以返回的引用:全局变量、静态变量、堆上的变量....
int &func()
{
static int a = 10;
printf ("a = %d\n", a);
return a;
}8.引用本质和常引用
// 引用:占4字节空间(指针) 必须要初始化(const 常量)
// ======> 引用的内部实现 const 常量指针
// int &b = a =====> int *const b = &a
// 用引用的时候 都是 *pb 去替换
printf ("&b = %p\n", &b); // printf ("&b = %p\n", &*pb);
//常引用// 1、用变量对常引用进行初始化
const int &c = a; // const int * const pc = &a; // 2、使用常量对常引用进行初始化
// 引用是一个空间的别名 ----> 缺空间
// 编译器会为这个常量开辟新的空间,将这个常量的值赋值给这个空间
// 同时将 d 作为这个空间的别名
const int &d = 20; // const int * const pd = &20; // e 是一个常量,值永远都是 25
const int e = 25;
b = 20; // *pb = 20;
相关文章推荐
- 【PHP】PHP基础知识与C++、Java等C家族的重点区别
- C/C++基础知识总结2
- 对C++基础知识的总结(主要针对笔试面试)
- C++基础知识(二)命名空间
- C++基础知识
- 【基础知识】C/C++动态开辟空间
- C/C++学习笔记---primer基础知识
- 【C++基础】C-串知识整理
- The New C++ -- 基础知识
- C++基础知识拾遗
- 【基础知识】c++字符串中需要注意的一些细节
- C++基础知识总结----类的进阶知识点
- C++基础知识
- C++ 顺序容器基础知识总结
- c++基础知识
- C/C++基础及高频率面试知识总结
- C++基础知识
- C++基础知识2
- C++语言基础知识点梳理
- C++基础知识(三)—— 常量