您的位置:首页 > 编程语言 > C语言/C++

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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: