首页 > 其他分享 >指针(六)

指针(六)

时间:2024-03-17 16:01:56浏览次数:22  
标签:arr 函数 int void qsort sizeof 指针

回调函数

回调函数指的是在某个特定事件发生时由另一个函数调用的函数。

回调函数通常作为参数传递给另一个函数,以便在适当的时候被调用。

总的来说,回调函数是一种灵活的机制,可以让我们在程序中动态地定义并实现特定的功能,从而实现更加模块化和可扩展的代码结构。

qsort函数

qsort是C标准库中的一个函数,用于对数组或其他数据集合进行快速排序操作,其原型定义在stdlib.h头文件中。

void qsort(void *base, size_t size, int (*compare)(const void *, const void*));
//base:指向要排序的数组的起始位置
//nmemb:数组中元素个数
//size:数组中每个元素的大小(以字节为单位)
//compar:比较函数指针,用于定义元素之间的比较规则

 下面是一个简单的实例用法:

#include <stdio.h>
#include <stdlib.h>

int compare(const void *a, const void *b) {
    return (*(int*)a - *(int*)b);
}

int main() {
    int arr[] = {4, 2, 9, 5, 1};
    int n = sizeof(arr) / sizeof(arr[0]);

    qsort(arr, n, sizeof(int), compare);

    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }

    return 0;
}

在这个示例中,我们使用qsort函数对整数数组进行排序,排序规则由自定义的compare函数定义。

sizeof和strlen的对比

1. sizeof

sizeof只关注占用内存空间大小,不在乎存放什么数据,单位字节,是操作符。

如果操作数是类型的时候,计算的是使用类型创建的变量所占内存空间的大小。

2.strlen

strlen是统计\0之前字符串中字符个数,包含头文件string.h,是库函数。

如果没有\0会持续向后找,可能会发生越界。

标签:arr,函数,int,void,qsort,sizeof,指针
From: https://blog.csdn.net/Fming_/article/details/136783459

相关文章

  • C语言指针(适合C语言进阶者):一道题带你深入理解数组与指针的关系
    ......
  • 突破编程_C++_C++11新特性(智能指针与内存管理(1))
    1内存管理基础1.1什么是内存管理在C++中,内存管理是一个核心概念,它涉及到如何在程序执行过程中分配、使用和释放内存。由于C++允许程序员直接管理内存,因此内存管理在C++中显得尤为重要。合理的内存管理可以确保程序的正确运行,避免内存泄漏、野指针等问题,提高程序的......
  • 每日一练:LeeCode-125、验证回文串【字符串+双指针】
    如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个回文串。字母和数字都属于字母数字字符。给你一个字符串s,如果它是回文串,返回true;否则,返回false。示例1:输入:s="Aman,aplan,acana......
  • 蓝桥杯算法集训 - Week 2:双指针、归并排序、多路归并
    蓝桥杯算法集训-Week2本系列随笔用于整理AcWing题单——《蓝桥杯集训·每日一题2024》的系列题型及其对应的算法模板。一、双指针Ⅰ、代码模板常见问题分类:(1)对于一个序列,用两个指针维护一段区间(2)对于两个序列,维护某种次序,比如归并排序中合并两个有序序列的操作f......
  • C语言基础-1、指针
    一、取地址运算运算符&scanf("%d",&i);中的&是获得变量的地址,它的操作对象必须是变量&不能对没有地址的东西取地址:&(a+b),&(a++)二、指针就是保存地址的变量inti;int*p=&i;int*p,q//p是一个指针,是一个指向int型的指针变量,q则是一个单纯的int型变量1、指针变量变量......
  • 指针数组、数组指针、函数指针、指针函数
    数组指针:是指向数组的指针,它还是一个指针,只不过指向数组而已行指针定义形式:int(*p)[10]一定要加(),因为[]优先级高于*,所以必须要(*p)指一行,这里10为列的元素个数例1:二维数组数值为1-12,用行指针定义输出8例2:用行指针传参,2*3数组,输出第二行指针数组:实际是一个数组,长度是......
  • 函数指针数组(转移表)
    函数指针数组,首先是一个数组,其次其中存储的数据类型是函数指针,所以我们可以通过使用函数指针数组来调用不同的函数。接下来为大家展示他的基本使用方法(模拟计算器)函数指针数组结构   int(*arr[])(intx,inty)={NULL,Add,Sub,Mul,Div};其中NULL,Add,Sub,Mul,Div......
  • 深入理解指针2
    今天我们接着上期来继续深入学习指针。1.指针运算指针的基本运算有三种,分别是:•指针+-整数•指针-指针•指针的关系运算 1.1指针+-整数因为数组在内存中是连续存放的,只要知道第⼀个元素的地址,顺藤摸⽠就能找到后⾯的所有元素。 intarr[10]={1,2,3,4,5,6,7......
  • 关于难难难的指针(基础版)
     指针指针难难难!!!那么我们在对指针进行一个比较深入的理解之前,我们应该对指针所学的知识模块做一个基础的了解。内存和地址指针变量和地址指针的运算野指针assert断言指针访问数组一维数组传参二级指针指针数组冒泡排序字符指针变量数组指针变量函数指针变量函数指针数组转移......
  • 二分与双指针
    目录一.二分1.二分模板2.什么情况下能用到二分?(时间复杂度是O(logn))1.在一个有序数组中,找某个数是否存在2.在一个有序数组中,找>=某个数最左侧的位置3.局部最小值的问题3.二分使用方法4.例题(注重理解!!!)二.双指针一.二分会二分首先得会二分模板吧1.二分模板typedeflo......