首页 > 其他分享 >学习记录第十四天

学习记录第十四天

时间:2024-07-30 21:24:32浏览次数:16  
标签:字符 begin const 指向 记录 int 学习 第十四天 指针

快速排序

void qSort(int *begin,int *end)    //快速排序
{
    if(begin >= end)
    {
        return;
    }
    int t = *begin;
    int *p = begin;
    int *q = end;
    while(p < q)
    {
        while(p < q && *q >= t)
        {
            --q;
        }
        while(p < q && *p <= t)
        {
            ++p;
        }
        swap(p,q);
    }
    swap(begin,q);
    qSort(begin,q - 1);
    qSort(q + 1,end);
}

字符指针表示字符串
字符指针是一个变量,其值为字符类型数据的地址。可以使用字符指针来指向字符串的首字符,从而间接访问整个字符串。例如:

char *str = "Hello, World!";

这里 str 是一个字符指针,它指向字符串字面量 "Hello, World!" 的起始位置。
字符数组表示字符串
字符数组是一种特殊的数组,其元素类型为 char。字符串常量可以用来初始化字符数组,并且在初始化时,编译器会自动在字符串末尾添加空字符 '\0' 作为终止标记。例如:

char strArray[] = "Hello, World!";

在这个例子中,strArray 是一个字符数组,包含了字符串 "Hello, World!" 的所有字符,包括结尾的空字符 '\0'。

指向函数的指针
声明函数指针
函数指针的声明需要指定函数的返回类型和参数类型,其语法类似于函数声明,但需要在类型前加上 * 符号来表示这是一个指针。例如:

int *funcPtr(int, int);

迭代器

用 *begin表示数组的第一个元素,用 *end表示数组的最后一个元素

例如,用迭代器实现选择排序:

void choiceSort(int *begin,int *end)
{
    while(begin < end)
    {
        int *p = begin + 1;
        while(p <= end)
        {
            if(*begin > *p)
            {
                swap(begin,p);
            }
            ++p;
        }
        ++begin;
    }
}

const:

const是一个类型限定符,用于表示对象不可修改。当应用于变量时,const关键字告诉编译器和程序员这个变量的值在初始化后不应该也不可以被改变。这有助于提高代码的可靠性和可读性,同时也可以避免意外修改变量的值,从而减少程序中的错误。
  1.你可以使用const来定义变量,这些变量在程序执行过程中不会改变。例如:const int MAX = 100;

  2.函数参数保护:当你传递参数给函数时,可以使用const关键字来保护这些参数不被函数修改。例如:

void print(const char *str) 
{
    // str不能在函数内部被修改
    printf("%s\n", str);
}

  3.数组和指针:const也可以用于指针,可以指定指针所指向的内容不能改变,或者指针本身不能改变(不能指向其他位置)。例如:

const int arr[] = {1, 2, 3};
int const *ptr = arr; // ptr指向的值不能改变,但ptr可以指向其他位置
int * const ptr2 = arr; // ptr2不能指向其他位置,但ptr2指向的值可以改变

动态内存分配:动态内存分配是指在程序运行时根据需要请求分配内存空间的过程。

malloc:用于分配指定大小的内存空间,并返回指向该空间的指针。如果分配失败,返回NULL。
realloc:用于调整已分配内存的大小,可以增加或减少内存块的大小。
free:用于释放由malloc、calloc或realloc分配的内存空间。

动态内存分配的注意事项
使用动态内存分配时,需要注意以下几点:
  1.避免内存泄漏:确保每次分配的内存在不再需要时都被释放。
  2.防止野指针:释放内存后,应将指针设置为NULL,以防止野指针的出现。
  3.注意内存越界:在操作动态分配的内存时,不得超出分配的范围。
  4.正确处理错误:检查malloc、calloc和realloc的返回值,以确保内存分配成功。

标签:字符,begin,const,指向,记录,int,学习,第十四天,指针
From: https://blog.csdn.net/qq_63843346/article/details/140803799

相关文章

  • C 语言指针学习
    C语言指针学习目标:复习软考+阅读代码+理解数据结构;1.指针定义内存区域中的每个字节都对应一个编号,这个编号就是地址。如果在程序中定义了一个变量,那么在对程序中进行编译时,系统就会给这个变量分配内存单元。按变量地址存取值的方式称为直接访问,如printf("%d",&i);另一种......
  • 学习的第十二天(2024.7.29)
    1.JavaScriptJavaScript,简称JS注意:js的语言在html页面中写在body中,在</body>这个标签的上部写2.JavaScript的基本语法:1.定义变量:let a=10;varb=20;2.也可以通过let声明对象:let obj={};对象中属性的赋值:obj.name="张三";3.定义常量:varsex="男";obj.name......
  • 勤奋学习的第十三天(2020.7.30)
    1.MySQL中的DMLDML:数据库管理语言1.添加数据:insert1.指定具体列时添加数据:insert into 表名(列名,列名...) value(,,...)这种情况会向表中具体列中添加一条数据,数据内容在value中insertintostaff(id,code,name,salary)value(2,'1002','李四',12000);也可以......
  • 高中生需要养成的学习习惯有哪些
    高中生需要养成的学习习惯包括主动预习、‌高效做作业、‌考后必分析、‌有错必改、‌认真听课、‌弄清概念性质基本方法、‌经常复习、‌以学为先、‌随处学习、‌讲究条理、‌学会阅读、‌合理安排、‌观察和思考有机结合、‌切磋琢磨、‌主动竞争、‌总结归纳。‌这些习惯涵盖......
  • 【学习笔记】并查集应用
    【学习笔记】并查集应用以NOI2001食物链为例の两种并查集用法。题目大意:规定每只动物有且仅有三种可能的种类\(A、B、C\),\(A\)会吃\(B\),\(B\)会吃\(C\),\(C\)会吃\(A\)。给定\(N\)只动物,\(K\)个语句。每个语句有如下两种可能的表达:1XY表示动物\(X\)与动......
  • 刷题记录
    给你两个正整数序列\(a_1,\ldots,a_n\)和\(b_1,\ldots,b_m\)。求每个\(j=1,\ldots,m\)的最大公约数\(a_1+b_j,\ldots,a_n+b_j\)。输入第一行包含两个整数\(n\)和\(m\)(\(1\leqn,m\leq2\cdot10^5\))。第二行包含\(n\)个整数\(a_1,\ldots,......
  • 暑期学习C语言第一天完整版
    回顾今日成果:一、scanf语句的掌握我们可以看一看这道题,只是一个简单的整数输入、输出。在这之中,我们就可以利用scanf、printf语句,在使用scanf语句我们需要注意:scanf(“%d”,&a);printf("%d",a);其中关键点为,在使用scanf时,%d在双引号里面和&a中&是我们容易遗忘。二......
  • 位运算卷积学习笔记
    位运算卷积学习笔记位运算卷积,即快速沃尔什变换\(\text{FWT}\)和快速莫比乌斯变换\(\text{FMT}\),但事实上最常用的是\(\text{FWT}\),因为\(\text{FMT}\)所求解的内容是\(\text{FWT}\)的子集。位运算卷积首先要知道位运算卷积指的是\[c_i=\sum_{j\odotk=i}a_jb_k\]形......
  • Ansible 学习与扩展整理
    一、Ansible基础知识回顾核心组件主机清单(HostInventory):定义了Ansible可以管理的目标机器列表。模块(Modules):Ansible执行特定任务的最小单位,类似于命令行工具或脚本。插件(Plugins):扩展Ansible功能,如连接插件、回调插件等。Playbook:YAML格式的文件,定义了Ansi......
  • Electron学习笔记(二)Hello World
    目录前言运行主进程创建界面使用窗口打开界面管理窗口的生命周期关闭所有窗口时退出应用(Windows&Linux)​如果没有窗口打开则打开一个窗口(macOS)使用预加载脚本访问渲染器的Node.js添加你自己的功能完整代码展示效果展示前言接上一篇文章Electron学习笔......