c语言指什么灵活,具体,指的是什么呢?

分享给朋友:通用代码: <input id="link4" type="text" class="form_input form_input_s" value="" />复 制flash地址: 复 制html代码: <input type="text" class="form_input form_input_s" id="link3" value="" />复 制分享视频到站外获取收益&&手机扫码分享视频二维码2小时内有效C语言指针灵活应用下载至电脑扫码用手机看用或微信扫码在手机上继续观看二维码2小时内有效C语言指针灵活应用扫码用手机继续看用或微信扫码在手机上继续观看二维码2小时内有效,扫码后可分享给好友没有优酷APP?立即下载请根据您的设备选择下载版本
药品服务许可证(京)-经营- 节目制作经营许可证京字670号 请使用者仔细阅读优酷、、Copyright(C)2017 优酷
版权所有不良信息举报电话:扫一扫下载手机客户端
扫描我,关注团购信息,享更多优惠
||网络安全
| | | | | | | | | | | | | | | |
||电子电工
汽车交通| | | | | | | | | |
||投资理财
| | | | | | | | | | | | | | | | |
| | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
||外语考试
| | | | | | | | |
| 视频教程|
C语言进阶:重点、难点与疑点解析(修炼C程序设计能力的必读之作)[按需印刷]
定价:¥59.00
POD价:¥101.00
促销活动:
?如此书原封面缺失,印刷将采用出版社授权的新封面;
?如电子文件出现问题,可能延长印制周期,我们将提前与您沟通
ISBN:6上架时间:出版日期:2012 年7月开本:16开页码:347版次:1-1
所属分类:
  透析C语言中的核心概念、重要知识点、不易理解的知识点,以及容易被错误理解的知识点
是修炼C程序设计能力的必读之作
C语言是编程语言中的一朵奇葩,虽已垂垂老矣,但却屹立不倒,诞生了数十年,仍然是最流行的编程语言之一。C语言看似简单,却不易吃透,想要运用好,更是需要积淀。本书是一本修炼C程序设计能力的进阶之作,它没有系统地去讲解C语言的语法和编程方法,而是只对C语言中不容易被初学者理解的重点、难点和疑点进行了细致而深入的解读,揭露了C语言中那些鲜为普通开发者所知的秘密,旨在让读者真正掌握C语言,从而编写出更高质量的C程序代码。
《C语言进阶:重点、难点与疑点解析》一共11章:第1章重点阐述了C语言中不易被理解的多个核心概念,很多初学者在理解这些概念时都会存在误区;第2~8章对预处理、选择结构和循环结构的程序设计、数组、指针、数据结构、函数和文件等知识点的核心问题和注意事项进行了讲解;第9章介绍了调试和异常处理的方法及注意事项;第10章对C语言中的若干容易让开发者误解误用的陷阱知识点进行了剖析;第11章则对所有程序员必须掌握的几种算法进行了详细的讲解;附录经验性地总结了如何养成良好的编码习惯,这对所有开发者都尤为重要。
  牟海军,资深C语言开发工程师,钟爱C语言,对C语言有较深入的理解和研究,实践经验较为丰富。喜欢研究算法,谙熟各种常见和经典的算法,颇有心得。擅长嵌入式linux开发,以及使用QT进行嵌入式开发。活跃于CSDN等技术社区,是CSDN的推荐博客专家。
《C语言进阶:重点、难点与疑点解析》
第1章 必须厘清的核心概念/1
1.1 堆栈/2
1.2 全局变量和局部变量/5
1.3 生存期和作用域/7
1.3.1 生存期/7
1.3.2 作用域/10
1.4 内部函数和外部函数/11
1.5 指针变量/14
1.6 指针数组和数组指针/17
1.7 指针函数和函数指针/20
1.8 传值和传址/22
1.9 递归和嵌套/25
1.10 结构体/29
1.11 共用体/32
1.12 枚举/37
1.13 位域/39
第2章 预处理/47
2.1 文件的包含方式/48
  为什么要写这本书
  或许绝大多数人都有这样的经历,最初学习C语言的目的是为了应付考试,所以对于C语言只能算是一知半解。真正运用C语言进行编程时会出现很多问题,让人措手不及,这时才发现自己只能理解C语言的皮毛,虽能看懂简单的代码,却写不出程序来,对于那些稍微复杂的代码就更是望尘莫及了。
  为了摆脱对C语言知其然不知其所以然的状态,本书将带领读者重启C语言学习之旅,这次不再是为了考试,而是出于真正的使用需要,所以有针对性地给出了C语言学习中的重点、难点与疑点解析,希望能够帮助更多的C语言爱好者走出困境,真正理解C语言,真正做到学以致用。
  为了让读者能够真正地理解C语言学习中的重点、难点与疑点,以及体现本书学以致用的特色,全书没有采用枯燥的文字描述来讲解C语言相关的知识点,而是采用知识点与代码结合的方式,同时对于代码展开相应的分析,这就避免了部分读者在学习了相关知识点之后仍然不知道如何使用该知识点的弊端,使读者可以通过代码来加深对相关知识点的理解。
  全书在结构安排上都是围绕C语言学习中的重点、难点与疑点进行讲解,如第1章并没有从讲解C语言中的基础知识点开始,而是先列举了C语言学习中易混淆的核心概念,使读者清晰地区分这些核心概念后再开始相应知识点的学习。本书对基础知识点也并非概念性地讲解,而是重点讲解了使用中的要点,同时重点讲解了C语言中的一些调试和异常处理的方法,以及误区和陷阱知识点。最后一章讲解了编程中必须掌握的一些常用算法。总之,本书能够使读者在现有基础上进一步提高自己的C语言编程能力,更清晰地认识和理解C语言。
  本书读者对象
  本书适合以下读者:
  C语言爱好者
  嵌入式开发人员
  初、中级C语言程序员
  参加C语言培训的学员
  如何阅读本书
  本书共11章,第1章主要针对C语言学习中一些容易混淆的核心概念进行具体讲解,内容跨度比较大,初学者学起来可能有些吃力,所以建议在遇到不懂的知识点时暂时跳过,待学习了后面的相关知识点后再进行相应的学习;第2~8章有针对性地讲解了C语言中的相应知识点,同时有针对性地对其中的要点部分进行具体讲解,读者可以通过这几章的学习夯实每个知识点的基础;第9章重点讲解了在C语言编程中进行调试和异常处理的一些常见方法和技巧;第10章重点讲解了C语言编程中的一些陷阱知识点,通过本章的学习读者可以知道如何在以后编程时绕开陷阱;第11章讲解了一些编程中的常用算法,这是编程中必然会遇到的,因此读者有必要掌握这些常见的算法。
  最后在附录部分给出了养成良好编程习惯的建议。本书针对每个知识点都提供了相应的代码,建议读者在学习的过程中自己动手编写,这样才会发现自己在C语言学习方面的缺陷,进而快速提升自己的编程能力。
  勘误和支持
  除署名作者外,参与本书材料整理和代码测试工作的还有项俊、马晓路、刘倩、罗艳、胡开云、余路、张涛、张晓咏、时翔、秦萤雪等。由于作者的水平有限,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。读者遇到任何问题都可以发邮件到,我会尽力为读者提供最满意的解答。书中的全部源文件除可以从华章网站()下载外,还可以发邮件向我索取。如果你有更多的宝贵意见,也欢迎发邮件与我交流,期待得到你们的真挚反馈。
  本书得以出版要感谢很多人,首先要感谢我的导师侯建华教授,无论是在科研还是平时的学习和生活中,都得到您严格的指导和无微不至的关怀,在此向您表示最真诚的敬意和衷心的感谢!
  其次要感谢我的好朋友们,他们是刘倩、马晓路、胡开云、时翔、张晓咏、余路、张涛,有你们的陪伴,我每天都过得很开心,感谢你们在生活中给予我的关心和体贴。同时也感谢实验室的项俊、梁娟、左坚、罗艳、严明君、李思,谢谢你们平时给予的帮助。
  感谢机械工业出版社华章公司的编辑杨福川和姜影,你们在这一年多的时间中始终支持我的写作,你们的鼓励和帮助指引我顺利地完成全部书稿。
  必须厘清的核心概念
  1.1堆栈
  1.2全局变量和局部变量
  1.3生存期和作用域
  1.4内部函数和外部函数
  1.5指针变量
  1.6指针数组和数组指针
  1.7指针函数和函数指针
  1.8传值和传址
  1.9递归和嵌套
  1.10结构体
  1.11共用体
  1.12枚举
  1.13位域
  人或多或少都有一点惰性和急功近利,我就是这样,在一开始学习编程的时候不喜欢阅读那些枯燥的文字,喜欢直接去阅读代码。但是渐渐地,我发现一个问题,那就是编程时经常会犯一些低级的错误。通过总结才明白,这些错误源于自己对C语言中的基本概念一知半解,知其然,不知其所以然,发现问题后才意识到那些枯燥的文字对掌握并熟练使用C语言非常重要。为了让读者少走一些弯路,本书的第1章先来介绍C语言中的核心概念。
  开始本章的学习之前,先向读者交代一下,由于本章涉及的知识范围较广,有些初学者理解起来会有些吃力,因此建议读者有选择地阅读,遇到陌生知识点可以暂时跳过,待学习了后面章节的内容后再回过头来阅读这一章的相关内容。当然,学习代码的最佳方法是动手,所以本章在讲解C语言的一些基本概念的同时,为了便于读者理解,有针对性地列举了一些代码,读者也可以通过这些代码来验证所学的概念,体会学习的乐趣,以避免单纯通过阅读文字来枯燥地学习概念。
  1.1堆栈
  不少人可能对堆栈的概念并不清楚,甚至部分从事计算机专业的人也没有理解通常所说的堆栈其实是两种数据结构。那么究竟什么是堆,什么又是栈呢?接下来,我们就来看看它们各自的概念。
  栈,是硬件,主要作用表现为一种数据结构,是只能在一端插入和删除数据的特殊线性表。允许进行插入和删除操作的一端称为栈顶,另一端为栈底。栈按照后进先出的原则存储数据,最先进入的数据被压入栈底,最后进入的数据在栈顶,需要读数据时从栈顶开始弹出数据。栈底固定,而栈顶浮动。栈中元素个数为零时称为空栈。插入一般称为进栈(push),删除则称为出栈(pop)。 栈也被称为先进后出表,在函数调用的时候用于存储断点,在递归时也要用到栈。
同类热销商品¥35.00¥24.50
订单处理配送
北京奥维博世图书发行有限公司 china-pub,All Rights Reserved;F0=F(a);F1=F(b);;if(F0*F1&=0);x0=a;x1=b;;for(k=1;k&=100;k++);{Xm=(x0+x1)/2;Fm=F(Xm);;if(fabs(Fm)&eps||fabs;if(F0*Fm)&0);{x0=Xm;F0=Fm;};else;{x1=Xm;F1=Fm;};finish:
F0=F(a);F1=F(b);
if(F0*F1&=0)
x0=a;x1=b;
for(k=1;k&=100;k++)
{ Xm=(x0+x1)/2;Fm=F(Xm);
if(fabs(Fm)&eps || fabs(x1-x0)&eps)
if(F0*Fm)&0)
{x0=Xm;F0=Fm;}
{x1=Xm;F1=Fm;}
finish:printf(“\nThe root of this equation is %f\n”,Xm);
/*程序段2*/
float F0,F1,F(float x),x,x1,x0,a,b;
float Fm,Xm;
F0=F(a);F1=F(b);
if(F0*F1&=0)
x0=a;x1=b;k=1;finished=0;
while(k&=100&&finished= =0)
{ Xm=(x0+x1)/2;Fm=F(Xm);
if(fabs(Fm)&eps || fabs(x1-x0)&eps) finished= 1;
if(finished= =0)
if(F0*Fm)&0)
{x0=Xm;F0=Fm;}
{x1=Xm;F1=Fm;}
printf(“\nThe root of this equation is %f\n”,Xm);
程序段2中各结构化都符合单入口和单出口的要求,但由于引入了一个变量finished作为标志,反倒使程序难以理解了,而这还只是一层循环,如果是多重循环,象程序段2的这种程序将更加难懂,如此看来,有时使用goto语句,还可以收到意想不到的效果。
问题39:for语句与while语句在实现循环时,哪一个更好?
for语句在很多语言中,都只是一个计数循环语句,即是在已知循环的执行次数的情况下适用,但在C语言中,for语句与while语句的功能一样强大,在有些方面显得更有优越性,跟while语句相比,for语句显得更为紧凑,它把与循环控制有关的部分都放在for语句的三个表达式中,使得for语句更清晰,更容易使用。
但对于初学者要掌握for语句的执行过程似乎比较困难,主要是难以接受这种形式,既如此,
何不去努力适应呢?下面还是把它的执行过程再赘述一次:
for语句的一般形式:for(表达式1;表达式2;表达式3)循环体
其执行过程是:
(1)计算表达式1;
(2)计算表达式2,若其值为真(非0),则执行循环体,然后执行(3);若为假(值为0),则结束循环,转至(4);
(3)计算表达3,转(2);
(4)执行for语句的后续语句。
写成与之等价的while语句形式是:
while(表达式2)
只要你认真分析for语句的执行过程,多加练习,相信你会很快掌握它的使用,并喜欢上它。 问题40:break语句和continue语句的作用是什么?什么时候使用它们?
break语句的作用是使流程跳出switch结构(参问题4)或用来从循环体中跳出,即提前结束这两种结构的处理,转而处理它们的后续语句。
continue语句的作用是用在循环体中,提前结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判断。
用在循环体,它们两者的区别是前者用于结束整个循环的处理,转而执行循环的后续语句(循环体外部),而后者只是放弃执行它后面的循环体内语句的处理,转而继续判断循环判断语句(循环语句内部)。
应该指出,这两者也都不符合结构化程序设计思想,合理安排程序完全可能不使用这两个语句,但与goto语句一样,在某些时候使用它们,可以收到意想不来的好效果。
问题41:如何看待二维数组中的行地址与列地址的关系?
二维数组是语言学习中的难点,在C语言中更是如此,原因是C语言中的数组处理非常灵活,它与指针的关系非常密切,很难加以区分,当然也没必要有意将两者割裂开来,从某种意义上讲,两者就是一会事。
C语言把二维数组看成一特殊的一维,即数组元素是一维数组的一维数组,为与元素地址相区分,而把这个特殊一维数组(二维数组中的一行)的地址称作行地址,把数组元素的地址称为列地址。
例如:int array1[3],array2[3][4];
在一维数组array1中,一共有三个元素array1[0],array1[1],array1[2],每个元素都有相应的地址&array1[0],&array1[1],&array1[2];
相应地,在二维数组array2中,也有三个元素,即array2[0],array2[1],array2[2],所不同的是这三个元素又都是一维数组,它们也有相应的地址&array2[0],&array2[1],&array2[2],这就是行地址,由于array2[0],array2[1],array2[2]又都是一维数组(不妨想象为a0,a1,a2),它们又各有自己的元素,以array2[0]为例,它的元素是array2[0][0],array2[0][1],array2[0][2],它们的地址是&array2[0][0],&array2[0][1],&array2[0][2],称为列地址。 现在我们已经从概念上对行、列地址进行了区分,一个更明显的区别还在于在进行指针(地址)运算时的不同,仍以上面的例子为准,&array2[0]与&array2[0][0]的值是相同的,但前者是行地址,相当于一个指向一维数组的指针,&array2[0]+1即&array2[0]所指内存单元往
下再移动一个一维数组,在此,是4个整型单元,而&array2[0][0]是列地址,相当于一个指向整型的指针,&array2[0][0]+1即指&array2[0][0]往下移动1个整型单元长度。
问题42:如何看待“空函数”?
所谓“空函数”即函数体为空的函数,也就是函数体只是由一对花括号构成的函数。可能你会想既如此,空函数没有任何可执行的实体,又何必要定义呢?确实,从这个意义上讲空函数没有存在的必要,但“存在的就是合理的”,正因为它的函数体是空的,所以也就不可能在函数体出现任何错误,也因此,空函数可以在程序调试过程中广泛使用,尤其是多模块程序的调试。我们在调试一个函数时,可以先用空函数暂时代替待检函数所调用的函数,在确定该函数无误以后,我们在把空函数用实际函数代替,如有错,则很容易获知错误是来自刚加入的这个函数。
注意的是,不能把空函数与无参函数混为一谈。
问题43:什么递归?为什么要使用递归?
递归调用就是函数直接或间接调用自身的调用方式称为递归调用它包括“回推”和“递归”两个过程。直接调用自身的即称为直接递归调用,间接调用自身的即称为间接递归调用,你应该首先掌握直接递归调用。
递归调用是设计和描述算法的一种有力工具,在解决复杂问题时,经常采用。理论上讲,任何递归算法都有其非递归算法,但实际运用中,能够写出相应的非递归算法并加以实现的递归算法是很少的,所以递归仍是解决复杂问题的常用方法之一。
另外,同一个问题用递归方法实现比用相应的非递归方法实现,更清晰,接口更规范。 问题44:如何正确使用递归调用?
能解决实际问题的递归算法都是由两部分构成,即递归表达式和递归出口,其中任何一个方面缺少问题都无法正确解。能采用递归描述的算法通常有这样的特征:为求解规模为N的问题,设法将它分解成一些规模较小的问题,然后从这些小问题的解方便地构造出大问题的解,并且这些规模较小的问题也采用同样的分解和综合方法,分解成规模更小的问题,并从这些更小问题构造出规模稍大问题的解,最后当N=1(或其它确定值),时能直接得到问题的解(即递归出口)。
根据笔者的经验,在用递归解决问题时,切忌过深的去了解递归过程各变量的值,这样对于问题的求解是没有任何好处的,要记住本就是因为问题过于复杂,我们才采用递归方法,如果再过深了解其实现细节就失去了这个根本的宗旨了。
需要指出的是,同一个问题用递归实现的效率不如用非递归方法实现的高,所以对简单问题应该尽可能不使用递归方法实现。
问题45:定义时用static修饰的外部变量是何含义?又有什么作用?
在函数外部定义的变量称为外部变量。在定义外部变量的时候加static修饰符的含义是使得该外部变量只能供本程序文件内部各函数使用,对于程序的其他程序文件是不可见的(千万别以为是使该外部变量存储在静态存储区,即为静态变量,记住所有外部变量都是静态变量)。这样做的好处是,为了减少各个程序文件之间的相互干扰,即出现同名的外部变量,尤其是在一个程序由多个程序员开发的情况下,加static的外部变量可以使各程序文件出现同名的外部变量,程序员可以完全按自己的意愿定义变量,而把要大家都可见的变量专门定义在一个文件中,然后在各程序文件加以说明。
问题46:什么是变量的作用域?如何安排变量的作用域?
变量的作用域指的是当修改一个变量的值时,这种修改所影响到的空间范围,根据变量的作用域可以把变量分为全局变量和局部变量。全局变量即在整个程序范围内都可见的变量,而局部变量只能在某个程序的一倍分范围内可见,如一个程序文件,一个函数,甚至一个分程序内部。在编程的时候应该尽可能地少使用全局变量,尽量不用全局变量在函数之间传递数
据,这样可以减少全局变量的负作用,而在定义局部变量时,应该弄清楚它具体只在那个函数内有效,为容易区分,最好不要定义同名变量,除非是出于一种特殊目的。
问题47:什么是变量的存储属性?如何正确使用变量的存储属性?
所谓变量的存储属性即指变量所在内存区域的属性,主要反映在变量存在的时间上不同,可以分为静态存储方式和动态存储方式,前者存放在静态存储区,而后者存放在动态存储区。静态存储区中的数据在程序整个运行期间都有效,而动态存储区中的数据只在本函数执行时有效。外部变量都存储在静态存储区中,函数内部或分程序内部定义的变量,默认的情况下存储在动态存储区,但可以通过加static修饰符指定它存储在静态存储区,函数的形参也存储在动态存储区。定义变量除非实际需要,应该指定变量为静态变量。
问题48:什么是变量的指针和指针变量?两者有什么区别?
所谓变量的指针即指变量在内存所占的存储单元的起始地址,而指针变量是指专门存放某类对象的地址(指针)的变量。如:int a,* &a就是变量a的指针,即变量a的地址,而pa是一个指针变量,用它可以指向整型数据的变量,即存放一整型变量的地址(指针),如pa=&a,此时pa指向变量a。两者的区别光从概念上区分是容易的,但实际使用时要区分并不容易,需要注意的是,并不一定要定义一个指针变量才可以使用变量的指针,而指针变量也只有指向一具体的变量时,它才真正有意义,它提供一种间接访问变量的一种方式。 问题49:如何用指针变量作为函数参数带回多个“返回值”?
用指针作为函数的参数可以在函数调用时使形参指针变量指向实参指针,此时如在函数修改形参指针变量所指向的存储单元内容相当于间接引用实参指针所指向的变量的值,从某种意义上说,似乎把在被调用函数中对变量的修改返回到了主调函数,我们可以利用这种方法在被调用函数中往主调函数带回多个“返回值”(因一个函数真正最多只能有一个返回值,所以在此加引号)。如需要带回一个值,就设置一个指针变量作为函数的形参。
问题50:为什么可以把一个字符串赋值给一个字符指针变量?但不能赋值给一个字符数组名?
C语言不提供字符串数据类型,对于所有字符串都是将其视为数组存储一连续的存储单元中,将一个字符串赋值给一个字符指针变量的实质是把该字符串在内存中所占的连续存储单元的起始地址(字符串的指针),赋予字符指针变量,即让字符指针变量指向该字符串。而字符数组名是一个常量,不能作为左子值,所以不能赋值。
例:char str[10],*ptr;ptr=“China”的赋值是正确的,而str= “China”是不允许的。 问题51:用scanf()和gets()函数输入字符串各有何利弊?
用scanf()函数输入数据时,默认分隔符是空格、跳格(Tab)等,也因此scanf()函数不能输入含有上述字符的字符串,这是其不足之处;与gets()相比,其优点是它可以一次输入多个字符串,而且还可以用于输入不同类型的数据,;应用面较广。
与scanf()函数相反,用gets()函数输入时,可以输入含空格、跳格等字符的字符串,但其不足之处在于,它只能用于输入字符串,且一次只能输入一个。
问题52:什么是函数的指针?如何用指向函数的指针变量的方式来调用相应的函数?
所谓函数的指针指的是函数的入口地址,可以认为是函数第一个可执行性指令所在存储单元的地址,在C语言中用函数名与标识函数的入口地址,即函数的指针,这一点与数组有相似之处,但与数组不同的,在数组中,可以考虑数组元素的地址,而在函数中,除了考虑函数的入口地址以外,不考虑函数中某具体指令或数据所在存储单元的地址。
通过指向函数的指针变量也可以间接调用相应的函数,需要注意的是,让一个指向函数的指针变量指向某一函数时,只需将函数的函数名赋予该指针变量,而一定不能带上相应的函数参数,也不需要带括号,例如:有一函数,其函数原型为float fun(float x);且有一指向函数的指针变量float (*fun_p)();则应该是fun_ p=fun;而不应该是p=fun(6.0);显然后赋值号右
边就是一次函数调用,得到的应该是当参数值为6.0时的函数值,所以这种赋值是错误码的。 问题53:用指向函数的指针变量作函数的参数有何好处?
通过指向函数的指针变量可以调用函数,意味着这个函数的一部分工作需要通过函数指针调用另外的函数来完成,它往往用在一些复杂的函数调用关系中,对于提高函数调用接口的一致性有一定的好处,下面我们通过一个例子来说明这个问题:
例:求一个函数定积分,在计算机上可以用数值方法来得到。用梯形法求定积分的通用函数如下:
#include &stdio.h&
#include &math.h&
float integral((*fun)( ),float a, float b)
float s,h,y;
s=((*fun)(a)+(*fun)(b))/2.0;
h=(b-a)/n;
for(j=0;j&n;j++)
s=s+(*fun)(a+j*h);
rwturn(y);
(*p_fun) ( float x),y;
y=intgral(p_fun,1,3);
printf(“%6.2f\n”,y);
y=intgral(p_fun,1,3);
printf(“%6.2f\n”,y);
在主函数两次调用intgrel()函数求积分函数在某区间内的定积分值,而两次调用的形式是完全一样的,但一次是求正弦函数的定积分,一次是求余弦函数的定积分,调用接口完全统一,这样可以有效降低编程的难度。当然,这里只是为了说明问题的一个例子,并没有太大的实际价值。
问题54:什么是指针数组?它主要有些什么应用?
顾名思义,指针数组即是其数组元素为指针的数组,它的定义方式为:
数据类型标识符
*数组名[数组长度]
这种定义形式一定与指向数组的指针的定义方式相区别,后者的定义形式为:
数据类型标识符
(*变量名)[数组长度]
既然指针数组的每一个元素都是一个指针,也就相当于一个同类型的指针变量,如有定义:char *str= “Hello”, (*ptr)[4];则ptr[0]=就是正确的赋值。
指针数组的一个简单而又常见的应用就是用于存放多个长度可能不等的字符串,即定义一个字符指针数分别指向一个字符串,如:char (*C_name)[4]= {“America”, “China”, “France”, “Japan”};这样做既比定义一个二维数组存放这些字符串省存储空间,而且在处理上也会比
三亿文库包含各类专业文献、幼儿教育、小学教育、外语学习资料、各类资格考试、应用写作文书、专业论文、中学教育、高等教育、文学作品欣赏、学习C语言100问28等内容。 
 C语言经典100题_理学_高等教育_教育专区。bc1...月又生一对兔子,假如兔子都不死,问 每个月的兔子...学习成绩&=90 分的同学用 A 表示,60-89 分之间...  最新版c语言经典习题100例(最全面)_工学_高等教育_教育专区。学习C语言必备 ...小兔子长到第三 个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子...  C语言的学习要从基础开始,这里是100个经典的算法-1_计算机软件及应用_IT/计算机...小兔 子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子...  100个经典c语言例题(带答案)_电脑基础知识_IT/...后每个月又生一对兔子,假如兔子都不死,问每个月的...学习成绩&=90 分的同学用 A 表示,60-89 分之 ...  C 语言的学习基础,100 个经典的算法: 题目:古典问题:有一对兔子,从出生后第...小兔 子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子...  C语言经典100题 62页 1财富值 C语言-100题1 7页...月又生一对兔子,假如 兔子都不死,问每个月的兔子...学习成绩&=90 分的同学用 A 表示, 60-89 分之间...  南开大学100题c语言_IT认证_资格考试/认证_教育专区。1: 第 1 题 m 个人的...‘\0’;} 50: 第 50 题 已知学生的记录是由学号和学习成绩构成,n 名学生...  C语言经典例子100个_IT认证_资格考试/认证_教育专区...后每个月又生一对兔子, 假如兔子都不死, 问每个...学习成绩&=90 分的同学用 A 表示, 60-89 分...  C语言编程100题_工学_高等教育_教育专区。基础的C语言编程 练习使用 ...小兔子长到第三个月 后每个月又生一对兔子,假如兔子都不死,问每个月的兔子...}

我要回帖

更多关于 c语言指什么 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信