智能家居项⽬实训笔记(华清远见)(⼆)
智能家居项⽬实训笔记(华清远见)
test案例
通过引⽤来实现,在test函数中修改c和d的值时,a和b的值同时被修改
void test(int &c, int &d){
}
test(a,b);
通过指针来实现,在test函数中修改。
void test(int *c, int *d){
}
test(&a, &b);
此时使⽤q=hello world并不能直接讲数据放在堆区,⽽是将字符串放在了常量区。此时会造成内存泄漏
使⽤拷贝函数,可以将hello world挨个放在q所对应的堆区内存中。且若再进⾏*q='x’的操作,此时q所对应的地址是字符串⾸地址。故替换的是第⼀个字符,变为xello world
[外链图⽚转存失败,源站可能有防盗链机制,建议将图⽚保存下来直接上传(img-MODHktje-1589531433743)(C:\Users\超超
\AppData\Roaming\Typora\typora-user-images\image-20200430214202197.png)]
[外链图⽚转存失败,源站可能有防盗链机制,建议将图⽚保存下来直接上传(img-cK67Igro-1589531433753)(C:\Users\超超
\AppData\Roaming\Typora\typora-user-images\image-20200430213942958.png)]
sizeof
sizeof引⽤,得到的是所指向的变量的⼤⼩。sizeof指针,得到的是指针本⾝的⼤⼩(地址是四个字节,就是四个字节)。
堆空间栈空间
栈空间
局部变量,在函数调⽤结束时,栈空间⾃动释放。从上到下压栈,先来的数据放在最下⾯。
堆空间
从低地址向⾼地址分配。需要⼿动分配malloc/new,⼿动释放free/delete
new和delete
new <;数据类型> (参数):其中<>是必须的参数,()是⾮必须的
字符串常量区
存放字符串常量,不能修改
静态区
存放的是全局变量或static修饰的变量,在程序运⾏结束的时候释放
BSS
未初始化的变量
DATA
已初始化的变量
函数重载
在同⼀个命名域中函数名相同,⽽参数不同(参数个数或类型不同)。通过函数的参数表⽽唯⼀标识并且区分函数的⼀种特殊的函数。返回值类型不算。
函数默认值
可以在参数中定义⼀个默认值,如果调⽤时未传参,则使⽤默认值参数。
sizeof 指针
若前⾯的有默认值,则后⾯的参数也需要默认值。
int add(int a = 10 ,int b =20){
}
add();
结构体
struct体现了c语⾔中封装的思想
class类体现了c++中封装的思想,类内可以声明成员变量、成员函数
public
公有成员
private
私有成员
protected
保护型
对象
对象由类来创建,本质是⼀块内存,存放的是对象的类描述的数据
在栈上创建对象
Student stu
函数调⽤结束时,栈上分配的内存会⾃动释放,普通变量访问成员时⽤stu.name
在堆上创建对象
通过new在堆区创建对象,指针变量访问成员时⽤pstu->name
Student *pstu//定义指针变量
pstu = new Student//创建对象
this指针
特殊的指针,指向类对象⾃⾝的⾸地址。
成员函数的参数和成员变量同名时可以⽤this显⽰区分,仅在类内能调⽤。
//成员函数参数
void student(int age){
this->age = age;//this指向的是成员变量
}
//成员变量
public:
void student(int age);
private:
int age;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。