首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏技术分享

    指针(6)---qsort函数

    而*comapr也就是指向这个函数的指针。 对指针数组进行排序,可以按照指针指向的值进行排序。

    25110编辑于 2024-06-18
  • 【C语言】指针(6)

    对于数组名的含义还不了解的话可以去看我的指针3那篇文章! ,也就相当于给strlen里传入了一个野指针 这时程序就会报错!。 &arr+1取出整个数组的地址再加1就相当于跳过一个数组指向该数组的末尾 只要数组内部无\0再怎么去查找都是找不到的 所以也是随机值但是会与从第一个元素开始查找得到得随机值相差6(6为元素个数)。 &arr取地址a取出的是整个数组的地址 整个元素的地址是从首元素开始的从第一个元素开始直到碰到\0 所以结果为66. 但是会与从第一个元素开始查找得到得随机值相差6(6为元素个数) &arr[0]+1拿到的是第二个元素的地址那就是从第二个元素开始统计 所以结果为5。

    26300编辑于 2025-12-23
  • 来自专栏C++

    C语言(指针6

    存放变量地址的指针叫一级指针,存放数组地址的指针叫数组指针,存放指针地址的指针叫二级指针,那存放函数的指针就叫函数指针。在学习函数指针之前,我们先来探讨一下函数的地址。 2.函数指针 在了解了函数的地址后,为了存放函数的地址,我们就来探究函数指针。跟其他指针一样,第一步肯定是要确定指针的类型。 去掉上面的函数指针变量名剩下的就是函数指针的类型,可以看到函数指针类型和数组指针类型很像,同样的,表示指针变量的 “ * ” 和指针变量名是结合在一起的,要用圆括号括起来。 是的,同样是用解引用操作符 “ * ” 解引用函数指针变量: 同样的,解引用操作时 “ * ” 和指针变量名也要用圆括号括起来,不然指针变量名就会与后面的括号结合,使得指针变量名变成一个函数名 同样的,数组指针类型和函数指针类型也都是可以用 typedef 关键字重命名的,但是对于数组指针和函数指针来说稍微有点区别。

    23810编辑于 2024-10-16
  • 指针篇(6)- sizeof和strlen,数组和指针笔试题

    1.3 sizeof和strlen的对比 二、数组和指针笔试题解析 图示指针3文章的内容,这里会用到 还需要指针1内存的知识 2.1 一维数组 int main() { int a[] = 注意:数组的地址就是数组最开始位置的地址,数组首元素地址也是那个地址,地址就是指针,在指针1中写过,指针变量的大小与类型无关,就是4/8个字节,只与运行环境有关。 ,因为&arr取出的就是一个6个字符的数组的地址,+1之后类型不变,还是一个数组指针。 这里的随机值比最初的arr地址打印出的随机值少6,因为跳过了6个字符。 总结 以上就是指针6的内容了,指针7将继续写一些指针运算相关的笔试题,不得不说期末周考完就是爽啊,安安心心学编程搞文章舒服多了。喜欢的靓仔靓女们不要忘记一键三连给予支持哦~

    27210编辑于 2025-12-30
  • 来自专栏CSDN搜“看,未来”

    【C++】算法集锦(6):快慢指针

    快排 双边遍历 首先啊,确定基准为4,左指针指向第一个元素,右指针指向尾巴。 左指针开始,向前遍历,找到第一个大于基准的元素就停下,轮到右指针,同理。 当两个指针都停下之后,将两个指针所指向的值互换位置。 重复上述步骤直到左右指针重合。 重合之后,将基准元素与左右指针当前位置元素进行互换。 doubleSideSort(vec1,0,left-1); doubleSideSort(vec1, right, keep_right); } int main() { vector<int> vec1 = { 4,6,8,7,9,3,1 其实说简单也简单,快慢指针就解决了,快指针两步走,慢指针一步走,只要两个指针重合了,那就说明有环,因为快指针绕回来了。 时间复杂度为线性,空间复杂度为常数。 示例: 输入: [ 1->4->5, 1->3->4, 2->6 ] 输出: 1->1->2->3->4->4->5->6 思路: 将 k 个链表配对并将同一对中的链表合并; 第一轮合并以后

    56030发布于 2021-09-18
  • 来自专栏海天一树

    小朋友学C++(6):this指针

    this指针是一个隐含于类中的特殊指针,指向对象本身。也就是说对象一旦被创建,this指针也就存在了。

    64760发布于 2018-04-17
  • 来自专栏mathor

    枚举+优化(6)——双指针优化2

    有了这个结论我们就可以利用双指针的思路了。首先我们把3个数组都排序,然后依次枚举A数组中的一个数A[i],表示我们从A数组挑选出的数是A[i]。

    66550发布于 2018-06-19
  • 来自专栏C++

    C语言基础:(十六)深入理解指针6

    前言 本期是C语言基础中有关指针的最后一篇博客,本期将为大家介绍sizeof和strlen的对比、数组和指针乃至指针运算的笔试题解析。那么现在让我们开始吧! 3.4 题目四 #include <stdio.h> int main() { int aa[2][5] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; int return 0; } aa是一个 2x5 的二维数组,初始化如下: int aa[2][5] = { {1, 2, 3, 4, 5}, // aa[0] {6, int 占 4 字节): 地址 值 &aa[0][0] 1 &aa[0][1] 2 &aa[0][2] 3 &aa[0][3] 4 &aa[0][4] 5 &aa[1][0] 6 所以 ptr2 指向 aa[1][0](即 6)。ptr2 指向 aa[1][0],ptr2 - 1 回退 1 个 int(4 字节)。

    18310编辑于 2026-01-14
  • 来自专栏蒙奇D索隆的学习笔记

    计算机初级选手的成长历程——指针6

    ,对于决定是指针类型还是指针变量的关键在于*,所以对于指针来说*才是指针定义的关键。 根据指针指针变量的定义,指针就是地址,指针变量就是存储指针的变量。 ; 15.5.2 数组指针指针数组的区别 在理解了数组与指针的区别后,我们再来看一下指针数组与数组指针的区别: 指针数组与数组指针的内存空间不同 从反汇编界面我们可以看到: 指针数组在申请空间时,会根据数组大小来申请对应数量的空间 接下来我们就来探讨一下数组指针与二级指针的异同点; 15.5.3 数组指针与二级指针 对于同为指针的数组指针和二级指针来说,它们有很多相同的地方: 内存中申请的空间相同 对于指针来说,指针指向的是对象的地址 不管是一级指针、二级指针还是数组指针也好,只要是指针它们都只会在内存空间中申请一块空间来存放数据; 工作原理相同 二级指针是先通过存储的一级指针的地址找到一级指针,再对一级指针进行解引用找到一级指针中存储的变量的空间地址

    39210编辑于 2023-12-18
  • 来自专栏C++

    指针+数组指针+字符指针+指针数组

    指针 指针作为C语言的核心部分,相比较其他的内容相对比较难懂一下,应用的方式多样,变化较多,导致很多的同学非常苦恼,那么接下来,我将陪你来共同揭开指针的神秘面纱; 指针的含义 大家不要把指针想的太难,指针其实就是通过地址找到对应的变量的位置 ,然后我们可以对地址进行解引用来访问变量的内存,来获取值的一种间接方法;我们通常说指针指向哪里哪里,就是指针变量里面存的其他变量(或者常量)的地址;即  指针->地址->内存; 普通变量指针 首先,我们现来看看指针的构成以及表达形式 ; 数组指针 数值指针,其主体是指针,他就是个指针,不过是有点不同而已,这个指针指向的是数组的地址,在此之前我们需要了解数组的地址; 数组的地址; 我们通常说数组的地址是数组名,是数组的首元素地址,也确实是这样 字符指针 含义 字符指针就是指针指向了字符或者字符串,因为字符串可以看成是一个字符数组,所以字符串指针与数组指针大致可以类比; 字符指针打印字符串 这里我使用了三种打印字符串的方式,从结果上看,很明显打出来的字符串都是相同的 指针数组 含义 指针数组,主体是数组,不同的是里面存的是指针,是地址; 指针数组打印二维数组 值得注意的是指针数组的[]前面的*p是没有括号的,我们可以这样看,他是一个数组,数组名是p,数组元素个数是3

    85810编辑于 2024-11-19
  • 来自专栏C++核心编程

    CCPP 指针变量 | 数组指针 | 指针数组 | 野指针 | 空指针

    普通变量和指针变量 共性 PS: 可见这4个函数的汇编指令完全一致,无论是什么类型的指针变量,对指针变量的读写跟普通变量没有任何区别,所谓的指向只是描述指针变量的值时多少而已,就读写而言,指针变量跟普通变量没有任何区别 空指针和野指针指针:定义了一个指针变量,如果没有进行初始化,系统就会有可能随机赋值一个地址给这个指针变量,也就是说,这个指向指向一个未知的区域。 空指针:空指针不是指向常数0,只指向地址0,即NULL,其实换句话说,指针的本质就是地址嘛,空指针就是指针本身的值(地址)为0空指针的作用是防止野指针的出现,因为我们不能知道野指针到底指向哪里,所以我们也无法判断一个指针是否是野指针 指针变量的+-运算 指针变量的加减运算:也就是做地址偏移,不同 的指针类型偏移的步长不同。 图片 图片 PS: 区分指针数组int *a[3]和数组指针int (*a)[3],前者时存放指针的数组,后者是指向数组的指针

    2.5K30编辑于 2023-03-21
  • 来自专栏C++核心编程

    CCPP 指针变量 | 数组指针 | 指针数组 | 野指针 | 空指针

    普通变量和指针变量 共性 PS: 可见这4个函数的汇编指令完全一致,无论是什么类型的指针变量,对指针变量的读写跟普通变量没有任何区别,所谓的指向只是描述指针变量的值时多少而已,就读写而言,指针变量跟普通变量没有任何区别 空指针和野指针指针:定义了一个指针变量,如果没有进行初始化,系统就会有可能随机赋值一个地址给这个指针变量,也就是说,这个指向指向一个未知的区域。 空指针:空指针不是指向常数0,只指向地址0,即NULL,其实换句话说,指针的本质就是地址嘛,空指针就是指针本身的值(地址)为0空指针的作用是防止野指针的出现,因为我们不能知道野指针到底指向哪里,所以我们也无法判断一个指针是否是野指针 PS: 区分指针数组int *a[3]和数组指针int (*a)[3],前者时存放指针的数组,后者是指向数组的指针。 这样两者的区别就豁然开朗了,数组指针只是一个指针变量,似乎是C语言里专门用来指向二维数组的,它占有内存中一个指针的存储空间。指针数组是多个指针变量,以数组形式存在内存当中,占有多个指针的存储空间。

    2.5K20编辑于 2022-10-04
  • 来自专栏可涵的从小白到大牛的征程

    指针进阶(1)(字符指针指针数组,数组指针,函数指针

    前言: 本文主要讲解指针进阶部分的内容,分为字符指针指针数组,数组指针,函数指针。 int *arr[5];//存放整型地址的指针数组 char *arr[6];//存放字符类型的指针数组 数组指针 概念辨析 我们类比一下: 整型指针:指向整型变量的指针,存放整型变量的地址的指针。 数组指针:指向数组的指针,存放数组地址的指针。 [3][5] = { 1,2,3,4,5,2,3,4,5,6,3,4,5,6,7 }; print(arr, 3, 5);//二维数组传参表示二维数组第一行的地址 return 0; } 二维数组的传参 数组接受时,行可以省略,但是列不能 指针接收,必须用数组指针来接收。 函数指针 函数指针就是指向函数的指针

    75310编辑于 2024-10-16
  • 来自专栏叶子的开发者社区

    数组指针指针指针

    概念 我们把指向数组的指针叫做数组指针,后面还会学到指针数组,这两个是不一样的,根据中学语文偏正词组的知识可以知道,前者是指针,后者是数组。 一般指针变量 int a[2][3]={{1,2,3},{4,5,6}}; int *P=&a[0][0];//int *p=a[0]; 数组在内存中的存储都是连续的,并且是先存放好第一行的元素,再放第二行的元素 注意:二维数组名a不可以赋值给一般指针变量p,只能赋值给二维数组的行指针变量。 行指针变量 行地址和列地址 先看一个代码。 #include <iostream> int main() { int a[2][3]={{1,2,3},{4,5,6}}; printf("%d %d",*a[0],*a[1]); } 首先这个代码是符合 行指针是一种特殊的指针变量,专门指向一维数组。

    86010编辑于 2023-07-28
  • 来自专栏叶子的开发者社区

    const 指针 常量指针 指针常量 常量指针常量

    常量指针:指向常量的指针指针定义语句的类型前加const,表示该指针指向一个常量。 const int a=666; const int * p=&a; 常量a只能被访问而不能被改写,但指向常量a的常量指针可以改写。 指针常量 在指针定义语句的指针名前加const,表示该指针是常量。 int a; int * const p=&a; 指针常量在定义时必须初始化,且不允许修改,但其指向的地址的值可以修改,即p不可改写而*p可以改写。 常量指针常量:指向常量的指针常量 在定义时必须初始化。 const int a=666; const int * const p=&a; 很简单,p和*p都不能改写。

    74310编辑于 2023-07-28
  • 来自专栏走在努力路上的自己

    初识指针指针指针变量、如何理解地址、指针类型的意义、void*指针、野指针、空指针)(笔记)

    解引用 return 0; } 二、指针指针变量 指针:地址 指针变量:变量-存放地址 指针变量用来存放地址的,指针变量并不完全等同指针 四、指针类型的意义(为什么不用ptr_t p代表所有指针) 1.指针解引用的时候有多大权限 (如果一个指针代替所有的话,解引用时的字节与变量定义类型不同) 2.指针类型决定了指针向前或向后走一步有多大 指针未初始化 2.指针越界访问造成野指针 3.指针指向的空间释放 1. 1.指针初始化 如果明确知道指针指向哪里就直接赋值地址,如果不知道指针应该指向哪里, 可以给指针赋值NULL。 七、空指针指针是一个特殊的数据类型,它的值定义为NULL。空指针不同于NULL的整数表示,它是一个指针变量的特殊值,表示该指针变量不指向任何有效的内存地址。

    1.2K10编辑于 2024-01-26
  • 来自专栏从小白开始修炼

    【C语言】指针进阶:字符指针&&数组指针&&函数指针

    指针数组 数组指针 &数组名 与 数组名 数组指针的使用 数组传参、指针参数 一维数组传参 二维数组传参 一级指针传参 二级指针传参 函数指针 结语 前言 回想之前,我们学了指针的一些基础 指针与结构体 指针的大小是固定的4/8个字节(32位平台/64位平台)。 指针是有类型,指针的类型决定了指针的±整数的步长,指针解引用操作的时候的权限。 指针的运算。 #include <stdio.h> int main() { int arr[10] = {1,2,3,4,5,6,7,8,9,0}; int (*p)[10] = &arr;//把数组 { printf("%d ", arr[i][j]); } printf("\n"); } } int main() { int arr[3][5] = { 1,2,3,4,5,6,7,8,9,10 0; i<sz; i++) { printf("%d\n", *(p+i)); } } int main() { int arr[10] = {1,2,3,4,5,6,7,8,9

    4K20编辑于 2022-11-15
  • 来自专栏米扑专栏

    指针数组与指向指针指针

    指针数组与指向指针指针 http://wlkc.gdqy.edu.cn/jpkc/portal/blob? key=173314 指针数组和数组指针的区别 http://allew.blog.163.com/blog/static/3374389720094148449239/ 指针数组[组图] http:/ beijing", "shanghai", "tianjin", "chongqing"}; int i, *iptr[3], a[3]={1,2,3},b[3][2]={1,2,3,4,5,6} /array_ptr  beijing shanghai        tianjin chongqing 1       2       3 1:2     3:4     5:6 ========= /func_ptr  3 6 3 6 max: 6

    3K40发布于 2019-02-19
  • 来自专栏c++与qt学习

    指针,野指针,万能指针

    指针 int * p=NULL; 空指针指向地址编号为0的地址,不可以访问空指针指向的内容,因为内存地址编号0~255之间被系统占用,不可以访问 但是可以printf("%d",p);,输出p指向的地址 野指针 int *p=0xffff; 指针变量指向非法的内存空间,或指针变量为初始化也属于野指针 万能指针 void 无类型指针称为万能指针* 万能体现在:void*可以保存任意数据类型指针的地址 #include<stdio.h> void test() { //万能指针 void* p = NULL; int num = 10; p = # //void *不可以直接解引用, * p2 = NULL; char* p3= NULL; //char类型指针赋值给int类型指针要进行强制类型转换,否则会报错 p2 =(int*)p3; //void*不用强转,也不会发出警告 //因为void*可以保存任意数据类型指针的地址 p1 = p3; } int main() { return 0; }

    1.8K10发布于 2021-03-02
  • 来自专栏学习

    什么是 字符指针? 数组指针? 函数指针? 函数指针数组?

    printf("%d ", a[i][j]); } printf("\n"); } } int main() { int arr[3][5] = {{1,2,3,4,5}, {2,3,4,5,6} ,{3,4,5,6,7}}; test(arr, 3, 5); return 0; } 这里实参是⼆维数组,形参也写成⼆维数组的形式,那还有什么其他的写法吗? 大小的地址,解引用即一维数组里面的一个元素 } printf("\n"); } } int main() { int arr[3][5] = {{1,2,3,4,5}, {2,3,4,5,6} ,{3,4,5,6,7}}; test(arr, 3, 5); return 0; } 总结:⼆维数组传参,形参的部分可以写成数组,也可以写成指针形式。 leftRound(char * src, int time) { int i, j, tmp; int len = strlen(src); time %= len; //长度为5的情况下,旋转6

    68410编辑于 2024-10-16
领券