- @TOC 前言 一、字符数组:字符数组:char str[5] = { ‘A’,66,‘C’ ,‘D’ ,69 }; / / 66换成大写字母就是B,69就是Echar str[5] = { ‘A’,66,‘C’ }; / / 初始化部分元素,其余默认是0char str[ ] = { ‘A’,66,‘C’ ,‘D’ ,69 }; / / 这样初始化时,可以不写个数例如: 二、字符串:定义:... @TOC 前言 一、字符数组:字符数组:char str[5] = { ‘A’,66,‘C’ ,‘D’ ,69 }; / / 66换成大写字母就是B,69就是Echar str[5] = { ‘A’,66,‘C’ }; / / 初始化部分元素,其余默认是0char str[ ] = { ‘A’,66,‘C’ ,‘D’ ,69 }; / / 这样初始化时,可以不写个数例如: 二、字符串:定义:...
- @TOC 前言字符串操作函数是用于操作字符串的。有的函数有新版和旧版,大同小异。字符串操作函数的头文件: string.h 一、字符串拷贝函数:将字符串复制到一个数组里。字符串拷贝:char str [ 20] = { 0 };旧版:***strcpy ( str, “hello word” )***;新版: ***strcpy_s (str, 20,“hello world”)***; /... @TOC 前言字符串操作函数是用于操作字符串的。有的函数有新版和旧版,大同小异。字符串操作函数的头文件: string.h 一、字符串拷贝函数:将字符串复制到一个数组里。字符串拷贝:char str [ 20] = { 0 };旧版:***strcpy ( str, “hello word” )***;新版: ***strcpy_s (str, 20,“hello world”)***; /...
- @TOC 前言 一、函数指针做结构体成员:结构体内不可以放函数,但是可以放函数指针。int sum(int a,int b){return a + b;}struct Node{int a;***int ( * p)( int a, int b)***; / / 成员是函数指针} no = { 12, sum }; 二、结构体的大小:结构体的大小,用 sizeof 计算,并不是简单是计算结构... @TOC 前言 一、函数指针做结构体成员:结构体内不可以放函数,但是可以放函数指针。int sum(int a,int b){return a + b;}struct Node{int a;***int ( * p)( int a, int b)***; / / 成员是函数指针} no = { 12, sum }; 二、结构体的大小:结构体的大小,用 sizeof 计算,并不是简单是计算结构...
- @TOC 前言如何通过地址操作空间? 使用内存操作符。 一、a, &a, p, *p, *&a 的关系:a 是某个变量。&a 是变量 a 所在的地址。int p=a; / / ***p**里面装着 a 的地址。*p 里面装着 a 的数据。*&a 里面装着 a 的数据。即:*&a 相当于变量 a ,既然 *&a==a, 所以 *&a 与 a 的用法一摸一样。 二、计算规则:*+空间的地址 ... @TOC 前言如何通过地址操作空间? 使用内存操作符。 一、a, &a, p, *p, *&a 的关系:a 是某个变量。&a 是变量 a 所在的地址。int p=a; / / ***p**里面装着 a 的地址。*p 里面装着 a 的数据。*&a 里面装着 a 的数据。即:*&a 相当于变量 a ,既然 *&a==a, 所以 *&a 与 a 的用法一摸一样。 二、计算规则:*+空间的地址 ...
- @TOC 前言前面我们学习了一级指针操作变量,那什么是二级指针?二级指针又如何操作变量呢? 一、二级指针的声明定义:二级指针定义:int a = 12; / / a变量有自己的空间地址,假设为 0x10, 里面装 12int *p = &a; / / p变量有自己的空间地址,假设为 0x20, 里面装 0x10int **pp = &p; / / pp变量有自己的空间地址,假设为 ... @TOC 前言前面我们学习了一级指针操作变量,那什么是二级指针?二级指针又如何操作变量呢? 一、二级指针的声明定义:二级指针定义:int a = 12; / / a变量有自己的空间地址,假设为 0x10, 里面装 12int *p = &a; / / p变量有自己的空间地址,假设为 0x20, 里面装 0x10int **pp = &p; / / pp变量有自己的空间地址,假设为 ...
- @TOC 前言之前我们讲了指针数组,今天讲一下数组指针。 一、数组与指针的概述:数组指针就是数组的指针,就是***指向数组的指针。***int a [5] = {1,2,3,4,5}; / / 定义一个数组int *p = &a[0]; / / 定义一个指针指向数组的首地址,由于 数组的首地址就是数组名,所以&a[0]==a; 则可写为 int * p = a;则此时的***指针... @TOC 前言之前我们讲了指针数组,今天讲一下数组指针。 一、数组与指针的概述:数组指针就是数组的指针,就是***指向数组的指针。***int a [5] = {1,2,3,4,5}; / / 定义一个数组int *p = &a[0]; / / 定义一个指针指向数组的首地址,由于 数组的首地址就是数组名,所以&a[0]==a; 则可写为 int * p = a;则此时的***指针...
- @TOC 前言 一、函数返回值:例如:int fun (void) / /有返回值函数{printf(“Hellow world!\n”);return 2; / / 返回值可以是任意数值,将12 返回给 fun().} 二、return 的应用:return 的作用:在有返回值的函数里:结束函数,返回一个值。在没有返回值的函数里:结束函数。结束这个功能就像是循环中的break,直接跳出函... @TOC 前言 一、函数返回值:例如:int fun (void) / /有返回值函数{printf(“Hellow world!\n”);return 2; / / 返回值可以是任意数值,将12 返回给 fun().} 二、return 的应用:return 的作用:在有返回值的函数里:结束函数,返回一个值。在没有返回值的函数里:结束函数。结束这个功能就像是循环中的break,直接跳出函...
- @TOC 前言 一、递归的理解:递归函数:函数自己调用自己的,叫做递归调用。例如:void fun(void){printf ( “Hellow!” );fun();} 二、循环角度理解递归:递归的本质就是循环。循环可以完全代替递归,但是递归在某些情况下代码会更简洁一点。可控递归三要素:void fun(int i) // 1.循环控制变量{if (i < 5) //2.循环的条件{pr... @TOC 前言 一、递归的理解:递归函数:函数自己调用自己的,叫做递归调用。例如:void fun(void){printf ( “Hellow!” );fun();} 二、循环角度理解递归:递归的本质就是循环。循环可以完全代替递归,但是递归在某些情况下代码会更简洁一点。可控递归三要素:void fun(int i) // 1.循环控制变量{if (i < 5) //2.循环的条件{pr...
- @TOC 前言 一、函数指针:函数也有地址,叫做函数地址:***& fun() ;***特点:函数名就是函数的地址:fun == & fun类型:去掉函数名,就是函数类型,比如:int fun ( int a, double b )的函数类型是 int ( int a, double b )函数指针就是: int ( * p) ( int a, double b ) = fun() ;定... @TOC 前言 一、函数指针:函数也有地址,叫做函数地址:***& fun() ;***特点:函数名就是函数的地址:fun == & fun类型:去掉函数名,就是函数类型,比如:int fun ( int a, double b )的函数类型是 int ( int a, double b )函数指针就是: int ( * p) ( int a, double b ) = fun() ;定...
- C 的令牌(Tokens)C 程序由各种令牌组成,令牌可以是关键字、标识符、常量、字符串值,或者是一个符号。例如,下面的 C 语句包括五个令牌:printf("Hello,World! \n");这五个令牌分别是: printf ( "Hello,World! \n" ) ;分号 ;在 C 程序中,分号是语句结束符。也就是说,每个语句必须以分号结束。它表明一个逻辑实... C 的令牌(Tokens)C 程序由各种令牌组成,令牌可以是关键字、标识符、常量、字符串值,或者是一个符号。例如,下面的 C 语句包括五个令牌:printf("Hello,World! \n");这五个令牌分别是: printf ( "Hello,World! \n" ) ;分号 ;在 C 程序中,分号是语句结束符。也就是说,每个语句必须以分号结束。它表明一个逻辑实...
- 执行程序时,可以从命令行传值给 C 程序。这些值被称为命令行参数,它们对程序很重要,特别是当您想从外部控制程序,而不是在代码内对这些值进行硬编码时,就显得尤为重要了。命令行参数是使用 main() 函数参数来处理的,其中,argc 是指传入参数的个数,argv[] 是一个指针数组,指向传递给程序的每个参数。下面是一个简单的实例,检查命令行是否有提供参数,并根据参数执行相应的动作:#inclu... 执行程序时,可以从命令行传值给 C 程序。这些值被称为命令行参数,它们对程序很重要,特别是当您想从外部控制程序,而不是在代码内对这些值进行硬编码时,就显得尤为重要了。命令行参数是使用 main() 函数参数来处理的,其中,argc 是指传入参数的个数,argv[] 是一个指针数组,指向传递给程序的每个参数。下面是一个简单的实例,检查命令行是否有提供参数,并根据参数执行相应的动作:#inclu...
- 插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入一般来说,插入排序都采用in-place在数组上实现。具体算法描述如下:从第一个元素开始,该元素可以认为已经被排序;取出下一个元素,在已经排序的元素序列中从后向前扫描;如果该元素(已排序)大于新元素,将该元素移到下一位置;重... 插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入一般来说,插入排序都采用in-place在数组上实现。具体算法描述如下:从第一个元素开始,该元素可以认为已经被排序;取出下一个元素,在已经排序的元素序列中从后向前扫描;如果该元素(已排序)大于新元素,将该元素移到下一位置;重...
- 选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。 过程演示:#include <stdio.h>void swap(int *, int *);void selection_sort(... 选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。 过程演示:#include <stdio.h>void swap(int *, int *);void selection_sort(...
- 冒泡排序(英语:Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。 过程演示:#include <stdio.h>void bubble_sort(int [], int);void swap(int *,int*);int main() { int arr[] = {3, 1,... 冒泡排序(英语:Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。 过程演示:#include <stdio.h>void bubble_sort(int [], int);void swap(int *,int*);int main() { int arr[] = {3, 1,...
- 生活中我们经常能见到TopK问题,例如:专业前10名、世界500强、富豪榜、游戏中前100的活跃玩家等。所以,TopK问题即求出一组数据中前K个最大或最小的元素,一般情况下,数据量都比较大。对于TopK问题,我们首先想到的可能是排序,对数据排好序以后,取前K个元素。但是,面对庞大的数据量时,排序并不适用,因为加载庞大的数据到内存中是个不小的消耗。所以,对于TopK问题,最佳的解决方式是用堆 生活中我们经常能见到TopK问题,例如:专业前10名、世界500强、富豪榜、游戏中前100的活跃玩家等。所以,TopK问题即求出一组数据中前K个最大或最小的元素,一般情况下,数据量都比较大。对于TopK问题,我们首先想到的可能是排序,对数据排好序以后,取前K个元素。但是,面对庞大的数据量时,排序并不适用,因为加载庞大的数据到内存中是个不小的消耗。所以,对于TopK问题,最佳的解决方式是用堆
上滑加载中
推荐直播
-
HDC深度解读系列 - Serverless与MCP融合创新,构建AI应用全新智能中枢2025/08/20 周三 16:30-18:00
张昆鹏 HCDG北京核心组代表
HDC2025期间,华为云展示了Serverless与MCP融合创新的解决方案,本期访谈直播,由华为云开发者专家(HCDE)兼华为云开发者社区组织HCDG北京核心组代表张鹏先生主持,华为云PaaS服务产品部 Serverless总监Ewen为大家深度解读华为云Serverless与MCP如何融合构建AI应用全新智能中枢
回顾中 -
关于RISC-V生态发展的思考2025/09/02 周二 17:00-18:00
中国科学院计算技术研究所副所长包云岗教授
中科院包云岗老师将在本次直播中,探讨处理器生态的关键要素及其联系,分享过去几年推动RISC-V生态建设实践过程中的经验与教训。
回顾中 -
一键搞定华为云万级资源,3步轻松管理企业成本2025/09/09 周二 15:00-16:00
阿言 华为云交易产品经理
本直播重点介绍如何一键续费万级资源,3步轻松管理成本,帮助提升日常管理效率!
回顾中
热门标签