任务六 C语言指针(讲解视频)-湖北省计算机技能高考操作(应会)考纲技能通

| 11份
| 63人阅读
| 0人下载
精品

内容正文:

好,利用指针向数组A10中输入十个字,其实道理也很简单。我们平我们看一下采用传统方法,我们是AAI等于0,I小于10I加加,然后利用scan f函数,然后通过渠道每一个元素空间的地址值and a符合I这种方式来存放十个字。那这个时候使用指针,就是既然我们定这个指针,那我们要使指针初始化为指向数组第一个元素的地址值,然后每次向后进行加一就可以了。所以说我们在这里不仅要初始化I等于0,还要让这个指针P指向数组第一个元素。然后I依旧不断的累加I小于10,然后这个时候我们就可以采用P加I这种方式。你们看I最开始为零,P指向数组第一个元素,那此时P加I就等于P。因为I的值为零,那此时是不是相当于像数组第一个元素输入值,然后下一次循环I等于一之后,P加一指针运算表示指向下一个元素的地址值,那此时就像第二个元素空间里面输入的值,那么以此类推就完成了向数组里面输入十个元素,利用指针方式。 好,我们来看一下如何使用函如何使用指针调用函数。由于函数和数组类似,数组名表示的是指向这一连续空间的地址值,首个元素地址值。那么函数它也是一块连续使用的内存空间,那么函数名也表示指向这块空间的第一个地址值指向这块空间的地址值。那此时我们如何去用指针调用函数呢?首先当然要定义一个函数指针去指向这个函数。我们由于这个函数,我们来看一下,这里创建了一个hello函数,hello函数输出里面只有一只有一代码输出hello world。并且这个函数的返回值是一个无返回值类型void。所以说我们在定义这个指针指向这个函数的时候,我们也要定义一个void。然后空格小括号纸上新函数名FUNC表示函数名星表示它定义的是一个指针,然后后面加上小括号表示它是函数,然后指向这个hello分号OK那此时就定义好了一个函数指针,指向hello这个函数。那么调用时同理,FUNC加加星号代表调用函数,然后后面还要加上一个小括号,此时这就表示使用指针调用函数。OK我们来cod f5运行一下,可以看一下hello word正常输出。第二个就是函数的返回值,函数的返回值是指针时,我们应该如何去做到?好,来看一下我们这里同样定义一个函数。比如说定义这里一个int一个新C小括号花括号。比如说这里我定义了一个函数名叫做C并且这个C函数的返回值是一个整型的指针。那这个时候我们就怎么做呢?我们在这里int一个A等于一个一,我直接return一个and,这里我制定好了一个函数C函数,这个函数在里面声明这个变量等于一,然后返回这个变量A所对应的地址值。好,此时我们在主函数里面,我们去接收这个函数的返回值的时候,我们要注意,我们要必须使用一个指针来接收。我现在int一个新P好,我们看一下,我让P指针等于C小括号。好,此时由于C函数返回的是指针,所以说我这里也要用指针变量P来接收。我们打印一下这个P变量,百分号P逗号P然后同样去打印一下这个P指针里面所对应的值。好,没运行好,我在这里加个换行符。好,我们来看一下,上面一个就表示这个指针P现在所指向的内存地址,那么下面一个就表示这个指针P所表示的值。 好,我们来看一下利用指针判断输入的字符串是否是回文串。在本质上也是在利用指针去判断一头一尾是否相等。一旦相等,一个向后走,一个向前走。当他们两个相遇,其实或者说错过的时候,就代表是一个回文串。当他们两个还没有相遇,或者说还没有错过,而循环戛然而止,那就说明他们肯定是遇到某一个不相等的制服,那么循环停止。但是说运用这个逻辑,我们此时要做的是一个很简单的事情。我们来看一下这里给定的一些条件,定了一个S100的字符数组,然后定义了两个指针,新P和CPU。我们还是同理,让一个指针指向开头,一个指针指向结尾,P等于让P指针指向开头。我们这里漏掉了一个井号,include STRING点H引入了字符串的相关库文件。好,那此时Q指向这个字符串的结尾,那个S加上STR1EN,这是获取,这是指向数组第一个元素。加上这个字符数组长度减1,就表示指向的数组最后一个元素。然后同理while循环,当它们两个相等的时候,新P等等于新Q的时候,循环继续一个指针向前轴,一个指针向后轴。然后注意然后要注意这个循环。我们现在判断的是新P等等于新Q就是当他们两个的值不相等的时候停止。那么除了这个除了他们两个不相等的时候,这个循环要停止。还有一种停止的情况就是当他们两个错过的时候,当他们两个错过的时候也是需要,或者说他们两个错过或者他们相遇的时候也是需要停止。因为他们两个一旦错过或相遇的时候,就代表是回文串。所以说我们这里还要加上一个and and p小于Q。那在我们在外面如何去判断它到底是回文串呢?这时我们就看这个循环,它有几种调制条件。第一种是新批不等于新Q的时候跳出,第二种是P大于等于Q的时候跳出。我们都知道当新批不等于CPU,有时候判断的两个字符不相等式,那就不是回文串。我们要的是外面这种后面这种跳出条件有做你可以做一个判断。如果说你的P大于等于Q那此时我就可以print f输出表示是回文串。这个就是利用指针判断回文串的条件。 我们来看一下这道题,利用指针统计字符串中字母、数字、空格和其他字符的个数。很简单,他这里给了四个变量,ABCD等于0。很明显这四个变量是用来做计数器,分别统计字母、数字、空格和其他字符的个数。在这里我们只要利用for循环读取字符串中的值I从零开始,SI不等于斜杠,零分号I加加读取字符串,然后开始去做判断。由于这个位置我们引入了c type文件,我们可以用到很多方便我们判断的函数。比如来判断字母,那么就是一只alpha函数。如果当前读取的字符是字母,我就让A加加,也就是说让A这个变量来统计字母的个数。Else if is digit, 这个是用来判断是否是数字的。如果是数字我就让B加加,也就是说用B来统计数字的个数LC if。如果说当前读取的SI是等等于空格,我就让C加加,也就是说这个变量C是用来统计空格的个数else,最后其他肯定都是字符串,我们只需要让E加加。好,那这个时候我们来随便输入一个字符串运行看一下。比如说ABC空格一二三空格百分号回车,那这个时候看到字母个数有三个,数字个数有三个,空格两个,其他字符一个,那么结果正确。 好,来看一下利用指针将数组排序。那将数组排序的方法有很多,比如冒泡排序、选择排序、插入排序。好了,既然利用指针,我们选择一个最简单的冒泡排序。好,那此时接着任务一,那此时在任务一中,我们已经向数组A10中输入十个整数之后我们可以开始排序,我们利用冒泡排序。那么外层循环决定比较的轮数,我让I从一开始,I小于等于数组长度减1,对,I小于10I加加,因为比较的轮数等于数组长度减一轮,我这里再定一个变量J然后内存循环决定比较的次数,每轮比较的次数等于数组长度减去当前的轮数。那么负循环,这个时候让J从零开始,由于J还要做索引值,所以J必须从零开始,然后J小于十减I,比较的次数等于数组长度减去当前的轮数,然后J加加好,然后此时我们就利用指针去做比较就可以了,所谓的用指针排序就是用指针做比较。那此时我们if星号A加J,比如说我们现在需要的是举个例子,比如说我们现在需要的是升序排序,也就是当前面的数比后面数大的时候,我们要进行交换。If AJ大于信号,E为J大于。信号,AJ加J加1. 如果大的话我们就开始交换交换。我们还要利用一个中间变量T,那么我们还要去定一个额外的变量T,那此时就让T等于新A加J做临时变量,然后星号A加J等于星号A加J加1,然后星号A加J加一等于TT在这里做了临时变量,那么这就是利用指针进行排序,实际上就是利用了指针取值,然后相邻的两个字进行比较。 好,我们来看一下这道题,利用指针将字符串进行合并,这里给定的一些代码S1和S2,我们需要将S1和S2的字符串合并到S3中,很简单,挨个取,挨个存就可以了,只不过是利用指针的方式来操作。我们首先来读取S一字符串,I等于0,S一中括号I不等于斜杠0,这是在读取S一字符串,然后I加加OK每取出一个利用新的索引,我们只需要在这个时候利用指针。我们传统的方式是用S3J中括号这种方式,用数组中括号索引这种方式。那此时我们用指针的话就要去把它稍微改一下,星号S3加上J这种方式去存取我们的字符,新S3加J等于S一中括号I然后每存一次还别忘了我们的索引是J要加加好了,此时再去读取第二个字符串,S2中括号I不等于斜杠0,然后I加加再去存放S2,同理也是一样的操作,星号S3加J等于S2中括号I然后J加加,当然最后别忘了封名,一定要封茗,星号S3加J等于斜杠0,最后人为手动风铃。好,我们一起看一下,我们要重新输出才会有结果。然后print f百分号S逗号S3好,我们输出一下结果,S一字符串ABCS2字符串DEF,可以看到成功输出ABCDEF成功合并。 好,我们来看一下这道题。他说要求第一个函数实现字符串的逆序存放,要求用指针实现。所谓实现字符串的逆序存放,其实本质上就是前后的字符进行一个交换。那这个时候其实我们它这里给定的变量新P等于STR。新Q等于STR也就是表示我们的两个指针P和Q都指向传入的形参这个字符数组。此时我们在这里需要做一件事情,让这个其中的一个指针指向这个数组的结尾,那么你用铝,然后另一个指针依旧保持指向这个数组指针的开头。然后一头一尾两个指针所对应的指针交换,然后不断的去循环,一个向前走,一个向后走,就可以达到这样的目的。所以说我们先完成第一步事情,让其中的一个指针指向数组的结尾。随时在这里做一个外循环,while小括号大括号,然后新Q我们让Q指针指向结尾,星Q不等于斜杠0,然后就让Q加加好。此时做完这一个循环之后,这个Q指针就会指向这个字符串的结尾斜杠零的位置。我们再进行Q减一次。此时这个Q指针就指向了数组的最后一个元素的地址值,然后再做一个外循环,让我们这两个值进行交换。由于这里给了个中间变量temp,temp等于CP然后新P等于新Q,然后新Q等于time做值的交换。然后每交换值完成一次P加加,然后Q减有一个指针一个向前走,一个指针向后走。当他们两个相遇,或者说P指针跑到Q指针后面去的时候,我们就知道交换完成。所以说什么时候应该继续交换呢?当我们的P小于Q的时候,这就是利用指针进行字符串的内序的做法。 好,我们来看这道题,利用指针找数字的最大值、最小值,已经给了一些变量,然后同理给了已经向这个数组里面输入了五个整数。那我们首先要指针P指向这个数组第一个元素地址值,也就是P等于A然后开始for循环遍历去取出,当然我们在便利之前,我们要先做一个假设。因为找最大值最小值我们通常用的是假设法。假设第一个值和假设第一个值同时为最大值最小值,也就是max等于min等于新P那么这也就是做的假设法。假设第一个值为最大值最小值,然后让I从I从一开始I小于size I加加便利除开第一个元素,后面的每个元素,然后拿着假设的最大值最小值去和后面所有的值进行比较,也就是if小括号你的心小括号P加I这是后面的每一个值去和后面我们的max还有我们的min同时去做比较,这是我们先写上max和me,那这个时候我们要是要找max保存最大值并保存最小值。那我们要是找比max更大的,也就是如果说一旦比max更大的支柱线,那么此时就要改变max值,那么max就等于新括号P加I同理一旦找到比命更小的值,我们同时也得改变最小值,也就是命等于新括号P加I那么当循环结束时,此时我们进行输出max和min就是最大值和最小值。好,假设我们输入五个数看一下,比如输入12345,可以看到最大值为五,最小值为一。 好,我们来看一下我们来看一下这道题,函数和指针的一个结合考题。它都利用指针和函数来求最大值、最小值和平均值,也很简单,我们需要先定提前定一个变量,比如说定一个普通变量I这个I变量是用来读取数组中的值的,作为索引。另外一个我们还要定一个求和变量float s等于0,然后开始做我们的假设法。假设我们的最大值和最小值就是我们数组元素的第一个值,也就是假设数组元素第一个值为最大值和最小值,然后开始遍历所有的元素,让I从一开始让I从一开始,我这个位置不需要赋值,这个位置手误写多了,然后I从零开始,然后I小于速度长度NI加加。然后此时再拿我们假设的最大值和最小值去和后面的每个值进行比较。也这里做比较依附力的新max小于我的新括号A加I也就假设后面找到比我max的更大值了,那此时我就要改变我的最大值新A加I那同理如果找到后面找到比我的更比我的命更小的了,那同理我也要改变我的更小值,也就是这里要做个心令等于新括号A加I那么由于每次遍历我们还要需要进行求和,因为最后涉及到平均值,平均值等于和除以总长度,所以说这里还要同时进行S等于S加上括号,新括号A加I求和。那么最后的平均值星号AVG就等于我们的和除以我们的数组长度。好,我们来运行一下1 2 3 4 5 6 7 8 9 10,可以看到最大值为一,最小值为一,平均值为5.5,那么结果正确。 好,我们来看一下C语言指针。指针实际上也是高考必考的一个考点。指针其实就是和普通变量没什么区别,只不过普通变量是存储的普通数据类型,而我们的指针存储的是地址值,存储的存储的是地址值。地址值是因为我们的内存条是以字节为单位,是以字节为基本存储单元。那么每一个存储单元都会有个对应的地址值。同理,存储地址值的变量我们就称为我们称为指针变量,这个就是指针,也就是指针实际上就是变量,变量就是指针,只不过存储的内容不同而已,这个是指针。第二个,我们如何去定义一个指针呢?很简单,我们就跟定义普通的变量一样,只不过在普通的变量名前面加上一个星号。比如说我现在想要定义一个指针,那么in的一个新POK,那此时就代表已经定义好了一个指针P。但是大家注意前面这个关键字并不是代表指针的数据类型,而是代表的是这个关键词代表的是指针所指向的这个内存单元,或者说这个内存空间里面所要存储的值。也就是说这个内存空间里面存放的是整数,那我这个位置就要写整数。如果这个内存空间存放的是字符,我们就要写字符串,那么使用主要分为两种,第一种是不带星号,第二种就使用的是带星号。那么带星号和不带星号它使用的起来了,其实上使用的是两种不同的内容,不带星号使用的也就直接使用P它它代表是什么意思呢?它其实代表的就它代表的是直接使用内存地址,直接使用的是内存地址。而我们带星号,也就是在使用这个指针P的时候,前面带上一个星号,它代表的是使用内存地址所对应空间里的值,代表的是使用内存空间里面所对应的值。在这里还是给大家举个例子,比如说我现在int一个A等于1,然后我先定一个指针指向这个变量A好,那此处就定义好了一个指针P指针P存储的是这个变量A的地址值OK。那我们现在打印print打印,我们想要用百分号D格式化输出来输出这个变量A所对应的地址,变量A所对应的值。那这个时候我们就要看这个位置到底是用信号还是不带星号,这里典型就是带星号,因为我们要使用的是空间所对应的值。那这个时候就要带星号,打印A就可以了,打印我们的新P就可以了。如果不带星号的时候,也就不带星号使用这个P那这个时候你要注意,不带星号使用的是这个内存地址。那此时我们就要使用我们的百分号P,也就是说来输出16进制的地址值,这是使用的一个区别。带信号和不带信号,这是大家前期比较难懂的一个点。第2第3个宿主名,宿主名其实由于宿主是一块连续的存储空间,所以说宿主名并不是一个单纯的一个名字或者说一个变量名等等。数字名还有一个概念就是数字名表示的是数组名,表示的是指向数组第一个元素的地址值。也就是说比如说现在int一个新int一个A10,那此时这个and a中括号零和这个A它实际上表示的是同一个含义。A零表示第一个地址,前面加了取地址符,就表示第一个元素的地址值和元素名。他们两个的含义是一样的,都是表示指向数组第一个元素的地址值。另外一个指针的运算,也就是我们后期在经常会看到这种代码。比如说同样还是用了一个A10,然后我们定义一个指针指向定的一个新P等于这个数字名,在后期可能会经常看到这种代码,P加加,P减等等等等这种类类似的代码。那这个指针运算代表的含义,实际上就是让数组或者说让指针就指向下一个元素。你看最开始我让新批指向的是AA代表数组第一个元素的地址值,那P加加之后,那就指向了数组第二个元素的递质值,再P加加就指向数组第三个元素的递质值。那么P减同理,这个是指针的运算。 好,我们来看一下题,将长整形S个位上的奇数删除,偶数组成新数并输出。这题本质上是在考循环厨师取余的方法和我们正确的代码。我们这里来看主题,这里给定一个自定义函数,然后里面有两个参数ln s和ln新T1个是长整型变量S一个是长值长整型的指针变量T然后这里传过来的是输入的数,也就是我要进行操作的数,并且和T的地址值,那就说明我们最后将操作后的数组成一个新数,存放在T身上就可以了。那所以说这里我们利用while循环,除了取法,while小括号花括号直接去操作我们的长城数S除了取法的核心代码S不等于0,然后用D等于S模拟十取出个位,然后放在D身上,然后再去判断每一位的数是否是偶数。If d除以二等等于零画括号,此时是偶数,我们要将将其组成新数并输出。这里肯定是利用一个星期,我们正确的代码就是新T等于新T加上取出来的数乘以一个全职S1。然后每进行正序一次全职要升全,S一等于S一乘以一个十,当然别忘了厨师娶一,厨师娶一肯定有厨师,S等于S除10。好,那这个时候我们来运行一下,比如输入个162437,这个时候偶数只有624组成的新数为624,那么成功。

由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。