数组
一维数组名称用途:
- 统计整个数组在内存中的长度
- 获取数组在内存中的首个地址
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个步骤
-
创建后缀为.h的头文件
- 头文件 #include < iostream>
- using namespace std;
-
创建后缀为.cpp的源文件
- 头文件#include “swap.h”
-
在头文件中写函数声明
-
在源文件中写函数定义
指针(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修饰指针
有三种情况:
- const修饰指针 —常量指针
- const int *p = &a;指针指向可以改,指向的值不可以改
- const修饰常量 —指针常量
- int * const p = &a;指针指向不可以改,指向的值可以改
- 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使用场景
作用:用来防止误操作