C++ 复习04 结构体 扩展能力
  dBFTbkVLMBge 2023年11月02日 40 0

075 动态内存  new和delete

C++ 复习04 结构体  扩展能力_结构体

C++ 复习04 结构体  扩展能力_结构体_02

void test07() {
    int *p = NULL;
    // 从堆区申请
    p = new int;
    *p = 100;
    cout<<"*p="<<*p<<endl;//100
    // 释放空间
    delete p;
    // new申请空间同时初始化空间
    int *p1 = NULL;
    p1 = new int(100);
    cout<<"*p1="<<*p1<<endl;//100
    delete p1;
}

int main(int argc,char *argv[])
{
   test07();
   return 0;
}

C++ 复习04 结构体  扩展能力_结构体_03

C++ 复习04 结构体  扩展能力_结构体_04

077 结构体变量

C++ 复习04 结构体  扩展能力_结构体_05

C++ 复习04 结构体  扩展能力_结构体_06

C++ 复习04 结构体  扩展能力_结构体_07

结构体中的成员拥有独立的空间

C++ 复习04 结构体  扩展能力_结构体_08

C++ 复习04 结构体  扩展能力_结构体_09

C++ 复习04 结构体  扩展能力_结构体_10

不初始化结构体成员就使用 运行结果是没有意义的

C++ 复习04 结构体  扩展能力_结构体_11

lucy是一个局部的结构体变量 不初始化 变量中的成员内容不确定

C++ 复习04 结构体  扩展能力_结构体_12

清空结构体变量

C++ 复习04 结构体  扩展能力_结构体_13

#include<string.h>
// 清空整个结构体变量memset
void test02() {
    Student lucy;
    memset(&lucy,0,sizeof(lucy));
    cout<<lucy.age<< " " << lucy.name<<endl;
}

int main(int argc,char *argv[])
{
   test02();
   return 0;
}

运行结果

C++ 复习04 结构体  扩展能力_结构体_14

再看字符数组的赋值

#include <iostream>
#include<string.h>
using namespace std;


// 结构体测试
struct Student {
    int age;
    char name[32];
};

void test01() {
    Student lucy;
    lucy.age = 100;
    // name成员  位符号常量 不允许用=给name赋值
    strcpy(lucy.name,"lucy");
    cout<<lucy.age<< " " << lucy.name<<endl;
}

int main(int argc,char *argv[])
{
   test01();
   return 0;
}

运行结果如下

C++ 复习04 结构体  扩展能力_结构体_15

078 结构体变量的赋值

C++ 复习04 结构体  扩展能力_结构体_16

079 结构体数组

本质是数组,每个元素都是结构体

结构体指针变量

本质是变量,这个变量保存的是结构体变量的地址

void test02() {
    Student lucy = {100,"lucy"};
    Student *p;
    p = &lucy;
    cout<<(*p).age << " " << (*p).name << endl;
    // 通过指针变量 使用->访问成员
    cout<<p->age<<" "<<p->name<<endl;
    // 还可以使用地址访问
    cout<< (&lucy)->age << " " << (&lucy)->name << endl;
}

int main(int argc,char *argv[])
{
   test02();
   return 0;
}

C++ 复习04 结构体  扩展能力_结构体_17

C++ 复习04 结构体  扩展能力_结构体_18

080 结构体的深拷贝和浅拷贝

C++ 复习04 结构体  扩展能力_结构体_19

C++ 复习04 结构体  扩展能力_结构体_20

lucy.name保存的是“hello world”的首元素地址,但是这个字符串本身存储在文字常量区

#include <iostream>
#include<string.h>
using namespace std;

// 结构体指针成员
struct Student {
    int age;
    char *name;
};

void test01() {
    Student lucy;
    lucy.age = 18;
    lucy.name = new char[32];
    strcpy(lucy.name,"lucy");
    cout<<lucy.age<< " " << lucy.name<<endl;
}

int main(int argc,char *argv[])
{
   test01();
   return 0;
}

C++ 复习04 结构体  扩展能力_结构体_21

C++ 复习04 结构体  扩展能力_结构体_22

C++ 复习04 结构体  扩展能力_结构体_23

两个指针成员都指向同一个堆区地址,delete会导致同一个空间多次释放

C++ 复习04 结构体  扩展能力_结构体_24

C++ 复习04 结构体  扩展能力_结构体_25

C++ 复习04 结构体  扩展能力_结构体_26

#include <iostream>
#include<string.h>
using namespace std;

// 结构体指针成员
struct Student {
    int age;
    char *name;
};

void test01() {
    Student lucy;
    lucy.age = 18;
    lucy.name = new char[32];
    strcpy(lucy.name,"lucy");
    cout<<lucy.age<< " " << lucy.name<<endl;

    //深拷贝
    Student bob;
    bob.age = lucy.age;
    bob.name = new char[32];
    strcpy(bob.name,lucy.name);
    cout<<bob.age<< " " << bob.name<<endl;
}


int main(int argc,char *argv[])
{
   test01();
   return 0;
}

C++ 复习04 结构体  扩展能力_结构体_27

C++ 复习04 结构体  扩展能力_结构体_28

C++ 复习04 结构体  扩展能力_结构体_29

081 结构体对齐规则和位域

C++ 复习04 结构体  扩展能力_结构体_30

C++ 复习04 结构体  扩展能力_结构体_31

C++ 复习04 结构体  扩展能力_结构体_32

C++ 复习04 结构体  扩展能力_结构体_33

C++ 复习04 结构体  扩展能力_结构体_34

C++ 复习04 结构体  扩展能力_结构体_35

C++ 复习04 结构体  扩展能力_结构体_36

C++ 复习04 结构体  扩展能力_结构体_37

C++ 复习04 结构体  扩展能力_结构体_38

C++ 复习04 结构体  扩展能力_结构体_39

C++ 复习04 结构体  扩展能力_结构体_40

C++ 复习04 结构体  扩展能力_结构体_41

082 共用体

C++ 复习04 结构体  扩展能力_结构体_42

// 共用体
union Data{
    char a;
    short b;
    int c;
};

void test02() {
    Data ob;
    ob.a = 10;
    ob.b = 20;
    ob.c = 30;
    cout<<ob.a + ob.b + ob.c << endl;
}

int main(int argc,char *argv[])
{
   test02();
   return 0;
}

C++ 复习04 结构体  扩展能力_结构体_43

C++ 复习04 结构体  扩展能力_结构体_44

C++ 复习04 结构体  扩展能力_结构体_45

088 命名空间

C++ 复习04 结构体  扩展能力_结构体_46

C++ 复习04 结构体  扩展能力_结构体_47

C++ 复习04 结构体  扩展能力_结构体_48

C++ 复习04 结构体  扩展能力_结构体_49

C++ 复习04 结构体  扩展能力_结构体_50

C++ 复习04 结构体  扩展能力_结构体_51

C++ 复习04 结构体  扩展能力_结构体_52

C++ 复习04 结构体  扩展能力_结构体_53

C++ 复习04 结构体  扩展能力_结构体_54

089 结构体增强

C++ 复习04 结构体  扩展能力_结构体_55

C++ 复习04 结构体  扩展能力_结构体_56

C++ 复习04 结构体  扩展能力_结构体_57

先找局部变量,没有再去命名空间找

C++ 复习04 结构体  扩展能力_结构体_58

C++ 复习04 结构体  扩展能力_结构体_59

090 引用

C++ 复习04 结构体  扩展能力_结构体_60

void test03() {
    int a = 10;
    // 引用初始化 &修饰变量为引用 系统不会为引用开辟空间 a和b代表同一空间
    int &b = a;
    cout<<"a="<<a<<endl;
    cout<<"b="<<b<<endl;
    cout<<"&a="<<&a<<endl;
    cout<<"&b="<<&b<<endl;
    b = 100;
    cout<<"a="<<a<<" "<<"b="<<b<<endl;
}

int main(int argc,char *argv[])
{
   test03();
   return 0;
}

C++ 复习04 结构体  扩展能力_结构体_61

C++ 复习04 结构体  扩展能力_结构体_62

C++ 复习04 结构体  扩展能力_结构体_63

C++ 复习04 结构体  扩展能力_结构体_64

C++ 复习04 结构体  扩展能力_结构体_65

C++ 复习04 结构体  扩展能力_结构体_66

C++ 复习04 结构体  扩展能力_结构体_67

091 内联函数 函数重载

C++ 复习04 结构体  扩展能力_结构体_68

C++ 复习04 结构体  扩展能力_结构体_69

C++ 复习04 结构体  扩展能力_结构体_70

C++ 复习04 结构体  扩展能力_结构体_71

C++ 复习04 结构体  扩展能力_结构体_72

C++ 复习04 结构体  扩展能力_结构体_73

C++ 复习04 结构体  扩展能力_结构体_74

092 函数默认参数与占位参数

C++ 复习04 结构体  扩展能力_结构体_75

C++ 复习04 结构体  扩展能力_结构体_76

C++ 复习04 结构体  扩展能力_结构体_77

C++ 复习04 结构体  扩展能力_结构体_78


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

dBFTbkVLMBge