【C++ | 基础】基本语法(部分)

本文深入探讨了C++中的指针概念及其应用,包括指针变量的声明、初始化与使用,以及指针在32位和64位系统下的内存占用情况。此外,还介绍了空指针和野指针的区别,const修饰符的不同用法,并详细讲解了如何利用指针访问数组和函数。最后,文章还涵盖了结构体的基础定义和使用方法,结构体数组、指针和嵌套的概念。
摘要由CSDN通过智能技术生成

C++重点内容

基本语法(部分)

1. 指针

1.1 基本概念

作用:通过指针间接访问内存

  • 内存编号是从0开始记录的,一般用十六进制数表示,如0xf300
  • 可以利用指针变量保存地址

指针就是一个地址

1.2 指针变量

声明:数据类型 * 指针变量名其中数据类型 *是一个整体,为指针数据类型

初始化:指针变量名 = &被指向的变量通过&符号可以取得变量的地址赋给指针

使用:*指针在指针前加上*表示解引用,找到指针指向内存中的数据,并且可以对内存中的数据进行读写操作

1.3 指针所占空间

指针也是一种数据类型

32位系统下,任何类型的指针都只占用4个字节内存空间;64位系统下,任何类型的指针都占用8个字节的内存空间

1.4 空指针和野指针

空指针:指向内存中编号为0的指针。一般用于初始化指针int * p = NULL

空指针不允许访问,因为系统中0-255的内存编号都是系统占用的,不可以访问

野指针:指向非法的内存空间int * p = (int *)0x1100。因为野指针指向的内存空间不是主动申请的,指向的内存可能没有权限访问或者禁止访问

野指针无法确定其指向的地址是否能够访问,所以不要随意使用野指针

空指针和野指针都不是我们申请的内存空间,所以不可访问

★ 1.5 const修饰指针

  • const修饰指针——常量指针,指向常量的指针

    指针类型前加const:const int * p = &a指针的指向可以修改,但是指针指向的值不可以修改,指针指向的必须是一个常量。这里指的是a的值不可以通过指针来修改*p = b但是可以通过直接访问a的方式修改a的值a = b;

  • const修饰常量——指针常量,指针本身属性是一个常量

    指针变量名前加const:int * const p = &a指针的指向不可以改,指针指向的值可以改。这里指的是a的值可以通过指针修改,但是p指向的地址不允许修改

  • const既修饰指针,又修饰常量

    同时在指针类型指针变量名前加const:const int * const p = &a指针的指向和指针指向的值都不可修改

1.6 指针、数组、函数

利用指针访问数组中的元素:int * p = arrarr既是数组名,也是数组的首地址,所以说数组也是指针。可以通过p++实现指针的递增,访问数组中的下一个元素

函数中的地址传递:void func(int *a, int *b)函数参数传入的是地址,并使用指针类型接收,在函数体中使用时需要用*进行解引用。地址传递时,形参改变会导致实参的值也改变

2. 结构体

2.1 结构体定义和使用

定义:struct 结构类型名 {结构成员列表}变量名;其中变量名可省略,作用为在声明结构体时顺便创建变量,作用域同结构体定义的作用域相同

结构体变量创建:struct 结构类型名 变量名其中的struct可以省略。

const使用场景:在函数的地址传递中使用const常量,可以在节省内存空间的同时避免函数体中修改指针指向的变量值

2.2 结构体数组

创建:struct 结构体名 数组名[元素个数]={};

2.3 结构体指针

创建:结构体名 * 指针变量名 = & 结构体变量名通过指针指向结构体变量student * p = & s

访问:指针变量名->结构体成员通过指针可以访问结构体变量中的成员变量p->name

2.4 结构体嵌套

定义:一个结构体中的成员可以是另一个结构体。成员中的结构体需要在第一个结构体之前声明

2.5 结构体做函数参数

传递方式有值传递和地址传递

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值