草庐IT

逍遥自在学C语言 | 指针陷阱-空指针与野指针

前言在C语言中,指针是一种非常强大和灵活的工具,但同时也容易引发一些问题,其中包括空指针和野指针。本文将带你了解这两个概念的含义、产生原因以及如何避免它们所导致的问题。一、人物简介第一位闪亮登场,有请今后会一直教我们C语言的老师——自在。第二位上场的是和我们一起学习的小白程序猿——逍遥。二、空指针空指针是指不指向任何有效内存地址的指针。在C语言中,可以用NULL宏来表示空指针。当一个指针被赋值为NULL时,它不指向任何有效的内存位置。下面是一个示例代码,演示了如何使用空指针:#includeintmain(){int*ptr=NULL;//声明一个指向整数的空指针if(ptr==NULL){p

逍遥自在学C语言 | 多级指针探秘

前言多级指针在C语言中是一种特殊的指针类型,它可以指向其他指针的指针。通过多级指针,我们可以间接地访问或修改存储在内存中的数据。在本文中,我们将讨论多级指针的概念、使用方法、使用场景以及常见错误及其避免方法。一、人物简介第一位闪亮登场,有请今后会一直教我们C语言的老师——自在。第二位上场的是和我们一起学习的小白程序猿——逍遥。二、指针及多级指针的概念指针是一个变量,它存储着内存地址。通过指针,我们可以直接或间接地访问内存中的数据。多级指针是指指针的指针,它们用于存储指向其他指针的地址。多级指针的级数表示了指向指针的数量。在C语言中,我们使用星号(*)来声明指针变量,而多级指针则通过在星号前添加

逍遥自在学C语言 | 指针函数与函数指针

前言在C语言中,指针函数和函数指针是强大且常用的工具。它们允许我们以更灵活的方式处理函数和数据,进而扩展程序的功能。本文将介绍指针函数和函数指针的概念,并讲解一些常见的应用示例。一、人物简介第一位闪亮登场,有请今后会一直教我们C语言的老师——自在。第二位上场的是和我们一起学习的小白程序猿——逍遥。二、指针函数指针函数是返回指针的函数,它的声明和定义与普通函数类似,但返回类型是一个指针类型。指针函数可以用于返回数组、字符串或动态分配的内存等。示例代码#includeint*getArray(){staticintarr[]={1,2,3,4,5};returnarr;}intmain(){int

逍遥子双卸任!阿里8年迎新变局!

撰稿| 言征“青山不改,绿水长流,创造一个新的江湖,再相会,任逍遥!”在618刚过去两天后“逍遥子”张勇,突然给阿里全员发出了一封关于自己重大变化的内部信!字里行间,洋溢着“大业尚未成功,我辈还需努力”的沧桑与期待感:“大家都知道,云计算、大数据和人工智能等核心技术的发展将会给社会带来巨大的变革,战略意义非常重大。目前云智能集团的完全分拆工作已经开始启动,正处于最关键时刻,要求必须全身心投入其中,同时也是考虑到分拆过程中公司规范化治理的要求,我个人不宜再同时担任两家集团的董事长和首席执行官的职责。”有人说阿里这次是要“破釜沉舟”把“云”做上市,也有人说张勇这是“急流勇退正当时”。1、逍遥子,不

逍遥自在学C语言 | 指针和数组的关联

前言指针和数组之间存在着紧密的关系。在本文中,我们将探讨指针和数组的关系、指针算术和数组遍历、多维数组与指针以及指针数组和数组指针。一、人物简介第一位闪亮登场,有请今后会一直教我们C语言的老师——自在。第二位上场的是和我们一起学习的小白程序猿——逍遥。二、指针和数组的关系在C语言中,数组名是指向数组首元素的指针。示例代码:#includeintmain(){intarr[5]={1,2,3,4,5};int*ptr=arr;//数组名作为指针使用//使用指针访问数组元素printf("ptr指向%d\n",*ptr);return0;}在上述示例中,我们将数组名arr赋给指针ptr,并使用*p

burp+逍遥模拟器 app抓包 (导入证书到系统的解决方案)

1.前言以前抓包,只要将证书直接导入至用户,就能愉快得抓取https的请求,忽然有一天,就用不了,很奇怪,抓包软件显示ClientSSLhandshakefailed:Anunknownissueoccurredprocessingthecertificate(certificate_unknown)原因是Android7.0之后默认不信任用户添加到系统的CA证书,知道了原因,解决起来就很简单了。2.模拟器和burp打开代理(这一块大部分教程都相似,所以略讲)2.1burp设置代理方式2.2模拟器设置代理方式2.3导出CA证书模拟器中进入http://burp页面,点击黄色的地方下载下载了之后

逍遥自在学C语言 | 位运算符<<的高级用法

前言在上一篇文章中,我们介绍了~运算符的高级用法,本篇文章,我们将介绍运算符的一些高级用法。一、人物简介第一位闪亮登场,有请今后会一直教我们C语言的老师——自在。第二位上场的是和我们一起学习的小白程序猿——逍遥。二、计算2的整数次幂代码示例#includeintmain(){intx=1;printf("请输入2的次方数:");scanf("%d",&x);inty=1运行结果三、将一个字节序列合并为一个整数例如,将4个字节组成的字节序列b合并为一个整数代码示例#includeintmain(){unsignedcharb[4]={0x12,0x34,0x56,0x78};unsignedin

逍遥自在学C语言 | 位运算符<<的高级用法

前言在上一篇文章中,我们介绍了~运算符的高级用法,本篇文章,我们将介绍运算符的一些高级用法。一、人物简介第一位闪亮登场,有请今后会一直教我们C语言的老师——自在。第二位上场的是和我们一起学习的小白程序猿——逍遥。二、计算2的整数次幂代码示例#includeintmain(){intx=1;printf("请输入2的次方数:");scanf("%d",&x);inty=1运行结果三、将一个字节序列合并为一个整数例如,将4个字节组成的字节序列b合并为一个整数代码示例#includeintmain(){unsignedcharb[4]={0x12,0x34,0x56,0x78};unsignedin

逍遥自在学C语言 | 枚举的那些事儿

前言在C语言中,枚举是一种方便组织和表示一组相关常量的工具。枚举类型有助于提高代码的可读性和可维护性。本文将介绍C语言枚举的基本概念、语法和用法,以及一些高级技巧。一、人物简介第一位闪亮登场,有请今后会一直教我们C语言的老师——自在。第二位上场的是和我们一起学习的小白程序猿——逍遥。二、基本概念枚举类型由enum关键字引入,并由一组常量构成。每个常量都称为枚举常量,它们在枚举中按顺序自动赋予整数值。enumSeason{SPRING,//0SUMMER,//1AUTUMN,//2WINTER//3};在上述示例中,我们定义了一个名为Season的枚举类型,并包含四个常量:SPRING,SUMM

逍遥自在学C语言 | 宏定义技巧让你的C代码快人一步

前言在C语言中,宏定义是一种预处理指令,用于在代码中定义和使用常量、函数或代码片段的替代。宏定义使用#define关键字来定义,并在代码中进行替换。宏定义具有以下优点:简化代码:宏定义可以将一些常用的、重复出现的代码片段简化为一个宏名称,提高代码的可读性和简洁性。提高效率:宏定义在预处理阶段进行替换,避免了函数调用的开销,从而提高了程序的执行效率。灵活性:宏定义可以根据不同的参数值生成不同的代码,具有更强的灵活性和适应性。一、人物简介第一位闪亮登场,有请今后会一直教我们C语言的老师——自在。第二位上场的是和我们一起学习的小白程序猿——逍遥。下面我们通过几个实际的使用场景来详细说明宏定义的应用。