C++基础知识 day2

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;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值