创建.h后缀的头文件
创建.cpp后缀的源文件
在头文件中写函数的声明
在源文件中写函数的定义
指针
指针本质就是寻找地址
指针语法定义 变量类型* 指针变量名;
//指针定义的语法:数据类型*指针变量名;
int * p;
//让指针记录变量a的地址
p=&a;
//如何使用指针
//可以通过解引用的方式来找到指针指向的内存
//指针前加*代表解引用,找到指针指向的内存中的数据
*p=1000;
cout<<"a="<<a<<endl;
cout<<"*p="<<*p<<endl;
指针所占用内存空间
cout<<sizeof(int *)<<endl;
cout<<sizeof(double*)<<endl;
cout<<sizeof(char *)<<endl;
cout<<sizeof(float*)<<endl;
在32位操作系统中 指针占据4个字节,64位操作系统中,指针所占据的内存为8个字节。
空指针
定义 指针变量指向内存中编号为0的空间
用途 初始化指针变量
注意 空指针指向的内存是不可以访问的
int*p=NULL;
野指针 指针变量指向非法的内存空间
const 修饰指针
int a = 10;
int b = 10;
const int * p = &a// const修饰指针 常量指针 指针指向的值不可以改,指向可以改。
int * const p = &a // const修饰常量 指针常量 指针的指向不可以修改,指针指向的值可以修改。
const int * const p = &a // const修饰常量和修饰指针 指针指向的值和指向都不可以修改
指针和数组
作用 利用指针访问数组中的元素
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
int * p = arr;
for (int i = 0; i<10; i ++)
{
cout << * p << endl;
p++;
}
指针与函数
地址传递可以修改实参的数值
//地址传递
void swap(int* p1, int* p2)
{
int temp = *p1;
*p1 = *p2;
*p2 = temp;
}
int a = 10;
int b = 20;
swap(&a, &b);
cout << a << endl;
cout << b << endl;
结构体
结构体属于用户自定义的数据类型,允许用户储存不同的数据类型
//结构体定义和使用
// 语法 struct 结构体名称{成员列表};
struct student { string name; int age; int score; };
struct student s1 = { "李四", 18,100,};
cout <<"姓名"<< s1.name << "年龄"<<s1.age <<"分数"<< s1.score << endl;
输出的话需要用.name .age .score
结构体数组
//结构体数组
// 将自定义的结构放入到数组中方便管理
// 1 定义结构体
struct student { string name; int age; int score; };
int main()
{
// 2 创建结构体数组
struct student arr[3] = { {"张三",18,100}, {"李四",20,80},{"王五",23,100} };
// 3 结构体数组中的元素赋值
arr[2].name = "赵六";
arr[2].age = 25;
arr[2].score = 100;
// 遍历结构体
for (int i = 0; i < 3; i++)
{
cout << "姓名" << arr[i].name << "年龄" << arr[i].age << "分数" << arr[i].age << endl;
}
system("pause");
return 0;
}