AcWing C++语法课 7 类、结构体、指针、引用

类的定义
#include<iostream>
#include<cstdio> 
using namespace std;
class Person
{
    private:
        int age,height;
        double money;
        string books[100];
        
        
    public:
        string name;
        void say() 
        {
            cout<<"i'm"<<name<<endl;  
        }
        int get_age()
        {
            return age;
        }
        void add_money(double x)
        {
            money+=x;
            
        }
    };     //类要加分号
    int main()
    {
        return 0;
    }  

类中的变量和函数被统一称为类的成员变量

private后面的内容是私有成员变量,在类的外部不能访问;public后面的内容是公有成员变量,在类的外部可以访问

//类的使用
    int main()
    {
        Person c;
        c.name="lyf";
        c.age=18;//错误,age是私有变量
        cout<<c.get_age()<<endl;
        c.add_money(10000);
        
        return 0;
    }  

7.1区别结构体和类的作用是一样的。不同点在于类默认是private,结构体默认是public

C++ 结构体的构造函数使用 - 知乎 (zhihu.com)

#include <stdio.h>
//使用默认构造函数 
struct student {
    int id;
    char gender;
        student(){} //默认构造函数一般不可见,此处专门写出
}pig;  //能不经初始化就定义变量 
​
int main(){
    pig = {23,'F'};//使用该语句必须整体赋值,不能单独赋值,用{}
    printf("pig ID = %d\npig Gender = %c",pig.id,pig.gender);
    return 0;
}
#include <stdio.h>
//使用自定义构造函数 
struct student {
    int id;
    char gender;
​
    //自定义构造函数 
    //可以同时初始化id和gender 
    student(int _id, char _gender) : id(_id), gender(_gender){} 
    //也可以单独初始化gender
    student(char _gender) : gender(_gender){} 
};  //不能不经初始化就定义变量 
​
int main(){
    student pig = student(23,'F');//定义变量,同时赋值
    student Pig = student('M'); //定义变量,单独赋值 
    printf("pig ID = %d\npig Gender = %c\n\n",pig.id,pig.gender);
    printf("Pig ID = %d\nPig Gender = %c",Pig.id,Pig.gender);
    return 0;
}

7.2指针和引用

进程(process)

空间:一般指内存 xxGB

指针指向存放变量的值的地址,因此我们可以通过指针来修改变量的值。

定义指针
int* p = &c;//p指向a的地址
cout<<*p<<endl;//*p是a

数组名是一种特殊的指针。指针可以做运算:

7.3链表

//创建新节点的第一种方式
#include <iostream>
using namespace std;
struct Node
{
    int val;
    Node* next;
    Node(): val(_val),next(_NULL);
    
}
int main(){
    
    Node node = Node(1);
    return 0;
}
 
//创建新节点的第二种方式
Node* p = new Node(1);  //加new返回地址,不加返回变量值

头节点 : 第一个节点的地址 head

链表的遍历方式:

for(Node* i=head;i;i=i->next)
    cout<<i->val<<endl;

添加节点:

Node* u = new Node(4);
u->next=head;
head=u;

删除节点:

head->next=head->next->next;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值