内容纲要
指针、数组、函数
案例描述:封装一个函数,利用冒泡排序,实现对整型数组的升序排序。
例如数组:int arr[10]={4,3,6,9,1,2,10,8,7,5};
#include <iostream>
////////////////////////////////////////普通冒泡排序
using namespace std;
void main() {
int arr[10] = { 4,3,6,9,1,2,10,8,7,5 };
int length = sizeof(arr) / sizeof(arr[0]);
int temp;
//冒泡排序 升序排列
for (size_t i = 0; i < length - 1; i++)
{
for (size_t j = 0; j < length - i - 1; j++)
{
if (arr[j] > arr[j + 1])
{
//交换位置
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
for (size_t i = 0; i < length; i++)
{
cout << "arr[ " << i << " ] = " << arr[i] << endl;
}
system("pause");
}
//////////////////////普通冒泡排序
////////////////////////////////////////////////////////////////封装为函数
#include <iostream>
using namespace std;
//注意:1.这里参数1必须是数组首地址。
// 2.最好参数2传入长度。以免之后还要求长度。
// 事实上在被调用的函数中求指针指向的数组长度不方便
void arrBubble(int * arr, int length) {
int temp;
//冒泡排序 升序排列
for (size_t i = 0; i < length - 1; i++)
{
for (size_t j = 0; j < length - i - 1; j++)
{
if (arr[j] > arr[j + 1])
{
//交换位置
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
void printArray(int * arr,int length) {
for (size_t i = 0; i < length; i++)
{
cout << "arr[ " << i << " ] = " << arr[i] << endl;
}
}
void main() {
int arr[10] = { 4,3,6,9,1,2,10,8,7,5 };
int length = sizeof(arr) / sizeof(arr[0]);
arrBubble(arr, length);
printArray(arr,length);
system("pause");
}
结构体
- 概念:结构体属于用户自定义的而数据类型,允许用户储存不同的数据类型。
- 注意结构体的struct 关键字可以省略
感觉就是类的定义
-
结构体的定义和使用
2.1 语法:struct 结构体名 { 结构体成员列表 };2.2通过结构体创建变量的三种方式:
- struct 结构体名 变量名
- struct 结构体名 变量名 = {成员1值, 成员2值 ...};
- 结构体定义时顺便创建变量
#include <iostream>
#include <string>
using namespace std;
struct Student {
string name;
int age;
double score;
}DearL26; //此处在定义结构体的时候就创建了结构体变量 DearL26
void main() {
//第一种定义类型
struct Student DearL;
DearL.age = 22;
DearL.name = "张三";
DearL.score = 61;
//第二种定义类型
struct Student stu1 = {"liao" ,22 , 90};
//第三种定义类型,在定义结构体的时候就创建了结构体变量 DearL26
DearL26.name = "第三种定义类型";
DearL26.age = 22;
DearL26.score = 666;
cout << "DearL 姓名: " << DearL.name << " age: " << DearL.age << " score: " << DearL.score << endl;
cout << "stu1 姓名: " << stu1.name << " age: " << stu1.age << " score: " << stu1.score << endl;
cout << "DearL26 姓名: " << DearL26.name << " age: " << DearL26.age << " score: " << DearL26.score << endl;
system("pause");
}
结构体数组
作用:将自定义的结构体放入到数组中方便维护。
语法: struct 结构体名 数组名[ 元素个数 ] = {{} ,{} ,{} ...{} }
//具体使用方法和上方结构体大致相同。
struct Student stuArray[2] =
{{"张三",22,66},
{"李四",24,26}
};
//结构体数组中的对象属性可以更改
stuArray[0].name = "张麻子";
//遍历数组和正常数组遍历是一样的。此处不做详解
结构体指针
作用:通过指针访问结构体中的成员
- 利用操作符
->
可以通过结构体指针访问结构体属性
struct student {
string name;
int age;
double score;
}
void main(){
//1.创建结构体变量
struct Student s = {"张三" , 18, 60};
//2.通过指针指向结构体变量
struct Student * pstudent = &s;
//3.通过指针访问结构体变量中的数据
cout << "p->name = " << p->name << endl;
cout << "s.name = " << s.name << endl;
cout << "&s.name = " << &s.name << endl;//注意这里.name返回的是一个内存中的地址。
}
//TODO: To Be Continue!!