C++基础语法:类,结构体,指针和引用

C++在C语言的基础上,增加了面向对象编程,C++支持面向对象程序设计。类是C++的核心特性,定义一个类,本质上是定义一个数据类型的蓝图:

可以看见一段代码如下所示:

#include <iostream>
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(){
    
    Person c;
    c.name = "XYZ";
    //c.age = 18;
    cout << c.get_age() << endl;
    c.add_money(10000);
    
    return 0;
    
}

private中的是私有变量,其中的值不能够直接访问,public中的内容是公有的,可以直接进行访问。结构体与类是近似的,但是通常来讲我们会将复杂的数据用类来进行打包,而较为见到的数据用struct来进行打包。

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

一段代码如下所示:

#include <iostream>
using namespace std;

int main(){
    
    //生成一个int类型的变量a,值为10
    int a = 10;
    //生成一个int类型的指针p;值为a的内存地址
    int *p = &a;
    //打印a的内存地址和打印p的值来进行比较
    cout << &a << endl;
    cout << p << endl;
    
    //打印存储在指针p中的值
    cout << *p << endl;
    
    //对p所存储的内存地址的值进行修改
    *p += 5;
    //可以发现a的值会得到修改
    cout << *p << endl;
    cout << a << endl;

    return 0;
}

首先我们生成了一个int类型的变量a,a的值为10;接着我们生成了一个int类型的指针,用来存变量a的内存地址,指针类型要用到符号*,而要访问一个变量的内存地址则需要使用符号&;如果我们对一个指针类型使用*,则能够方位这个指针所存储的内存地址中的值。

这段代码的输出结果如下所示:

0x7fff7032caa4
0x7fff7032caa4
10
15
15

在c++中,数组名是指向数组中第一个元素的常量指针:

#include <iostream>
using namespace std;

int main(){
    
    int arr[4] = {1,2,3,4};
    
    //数组名是指向数组中第一个元素的常量指针
    //数组中的第一个元素的地址可以用数组名来进行表示
    int *p = arr;
    
    //打印数组的第一个元素的内存地址
    cout << &arr << endl;
    
    //打印存储在指针p中的内存地址
    cout << p << endl;
    
    //访问数组的第一个元素的内存地址所存储的数据
    cout << *arr << endl;
    
    //访问数组的第二个元素的内存地址所存储的数据
    cout << *(arr+1) << endl;
    

    return 0;
}

运行的结果为:

0x7fffc15c80f0
0x7fffc15c80f0
1
2

引用被被称之为叫做别名,相当于同一个内存地址的不同的名字:

#include <iostream>
using namespace std;

int main(){
    
    int a = 10;
    int& b = a;
    
    cout << a << endl;
    cout << b << endl;
    
    cout << &a << endl;
    cout << &b << endl;

    return 0;
}

运行结果为:

10
10
0x7fff4054c024
0x7fff4054c024

可以发现a和b实际上使用的是同一个内存地址。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值