指针、数组、函数的实例。结构体。结构体数组。结构体指针。
内容纲要

指针、数组、函数

案例描述:封装一个函数,利用冒泡排序,实现对整型数组的升序排序。
例如数组: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");
}

结构体

  1. 概念:结构体属于用户自定义的而数据类型,允许用户储存不同的数据类型。
  • 注意结构体的struct 关键字可以省略

感觉就是类的定义

  1. 结构体的定义和使用
    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!!

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇