C++基础 数组 函数 指针 结构体

本文详细介绍了C++中的数组操作,包括长度计算、内存地址获取;函数声明与分文件编写;指针的概念、类型和应用,以及空指针和野指针的区别;const修饰指针的三种情况;指针与数组、结构体的关系,以及结构体中const的使用场景。
摘要由CSDN通过智能技术生成

数组

一维数组名称用途:

  1. 统计整个数组在内存中的长度
  2. 获取数组在内存中的首个地址
int arr[5] = {1,2,3,4,5};
cout << "整个数组占用内存空间:" << sizeof(arr) << endl;
cout << "每个元素占用内存空间:" << sizeof(arr[0]) << endl;
cout << "数组中元素个数:" << sizeof(arr) / sizeof(arr[0]) <她< endl;

cout << "数组首地址:" << arr << endl;//十六进制
cout << "数组首地址:" << (int)arr << endl;//强转十进制
cout << "数组中第一个元素地址:" << (int)&arr[0] << endl;//加取地址符&,因为arr[0]是元素
cout << "数组中第二个元素地址:" << (int)&arr[1] << endl;

函数

函数的声明

作用:提前告诉编译器函数的存在。声明可以有多次,定义只能有一次。

函数的分文件编写

4个步骤

  1. 创建后缀为.h的头文件

    • 头文件 #include < iostream>
    • using namespace std;
  2. 创建后缀为.cpp的源文件

    • 头文件#include “swap.h”
  3. 在头文件中写函数声明

  4. 在源文件中写函数定义

指针(32位操作系统占4个字节,64位占8)

作用:可以通过指针简介访问内存

  • 内存编号是从0开始记录的,一般用十六进制数字表示
  • 可以利用指针变量保存地址
//1、定义指针
int a = 10;
int *p=&a;
//让指针记录变量a的地址
//p = &a;
cout << "a的地址为:" << &a << endl;
cout << "指针p,即a的地址为:" << p << endl;

//2、使用指针
//通过解引用(指针前加*)的方式来找到指针指向的内存中的数据
*p = 1000;
cout << "a = " << a << endl;
cout << "*p = " << *p << endl;

空指针

*p = NULL;

  • 指针变量指向内存中编号为0的空间。
  • 可以初始化指针变量。
  • 空指针指向的内存是不可以访问的

野指针

  • 指针变量指向非法的内存空间
  • 不可以访问

const修饰指针

有三种情况:

  1. const修饰指针 —常量指针
    • const int *p = &a;指针指向可以改,指向的值不可以改
  2. const修饰常量 —指针常量
    • int * const p = &a;指针指向不可以改,指向的值可以改
  3. const既修饰指针,又修饰常量
    • const int * const p = &a;都不可以改

指针和数组

指针和函数

结构体

include <string>
struct Student
{
   string name;
   int age;
   int sorce;
}s3;//顺便创建学生3
//创建具体学生1
//----------------创建结构体变量时,struct可以省略
struct Student s1;
s1.name="张三";
s1.age=12;
s1.sorce=133;
//创建具体学生2
struct Student s2={"李四",19,234};

结构体数组

作用:将自定义的结构体放入到数组中,方便维护
语法:struct 结构体名 数组名[数组个数] = { {},{},{} };

结构体指针

利用操作符->可以通过结构体指针访问结构体属性

include <string>
struct Student
{
   string name;
   int age;
   int sorce;
};

struct Student s={"李四",19,234};

//指针指向结构体变量
Student *p = &s;

//指针访问结构体变量中的数据
cout << "姓名:" << p->name 
     << "年龄:"<< p->age <<endl;

结构体中const使用场景

作用:用来防止误操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值