指针(5)(含大量题目)

 sizeof和strlen对比

以上内容太过简单,之前都了解过。所以不讲以上东西,你们看一下就行

只是要额外多说两点。

1.  sizeof除了操作数是类型,其他为操作数时都可以不用括号。就只有类型为操作数时必须要括号。这是硬性语法规定

2.  sizeof里面如果有表达式的话,表达式不执行。

 数组和指针笔试题解析

题目一,二

两个都太过简单,不过多叙述

题目三 

第一行第二行为随机值 ,很简单不叙述。

第三行操作数是*arr ,为字符,因为会强制转化为地址,所以为000000097地址,这地址为计算机不可使用地址,使用了程序就崩了。

第四行同理

第五行形参是为地址跟第一行的值一样,但类型为整个数组。char  (*)[5]能隐式转换为 char *,char*再隐式转换为const char *。(char (*)[5]能隐式转换为 const char *,分两步更好理解)。

  所以我们这能得出char数组指针能隐式转换为char指针。对于其他类型也相同,前提是两者基本类型要相同,都要为char。 至于无const隐式转换为有const,我们都知道。

第六行同理 ,虽然最终类型相同,但地址值不同,为随机值,但比第一行的随机值少6

第七行同理,为随机值,比第一行的随机值少1

题目四

与题目三差不多,只是不是随机值,第三个第四个由于强制转化地址,所以为0000000096地址,该地址为计算机内不可使用地址,使用这类地址程序会报错。而其他的是同样的道理跟题目三一样,只是多了个\0导致结果有差异

题目五 ,六

 很简单,没什么好讲的。

 题目七

除了第五个和第六个其他都讲过,第五个第六个是因为他们&p为二级指针,所以并不在字符串所在的内存位置,所以遇到\0是随机的,为随机值。

题目八 

 除了最后一个都没什么好说的。

最后一个并不会出现越界访问,因为sizeof里面的表达式不会执行,所以不执行就不会出现越界访问。而且在运行前sizeof就已经确定好了大小(计算机模拟确定,不执行里面的操作,但模拟出最终的空间大小,作者的个人理解)所以模拟的最终空间为16,结果为16。

 指针运算笔试题解析 

 第一题

 很简单,不过多叙述

第二题 

 

很简单,没什么好说的。但我们要说一些额外的点。 

 地址都是以十六进制去表示的,所以%p(表现出地址)表示的也是十六进制的数(其值为放在内存中的值,也就是补码),且必须是八个整数或十六个整数(按照环境来定)符合地址的格式。

第三题

 该题虽然很简单,但有很容易忽略的点

就是在自定义时有逗号表达式( 逗号表达式就是,和()结合在一起,最终()里面的结果是最后的,右边的值)

所以这初始化是未完全初始化,只初始化了前三个1,3,5,如果要全部初始化,就要除去逗号表达式,把括号改成大括号{}。

该题结果为1.

第四题 

 

 

该题我认为难点在于 %p 和%d的本质区别,%p是把数据以存放在内存中的形式(补码)转化为地址的形式用十六进制打印出来,%d是用原码打印出来十进制整数。

结果如上。证明了我的想法。 

第五题 

 该题很简单,一个为10,一个为5.

第六题 

 其实不难,但这里还要额外说的一点还是%s的占位符本质。

%s比较特殊其输出字符串,对应的参数需要是字符串的地址(指针),从而最终打印其参数地址所指向的内容一直到\0之前的一个字符。这是其作用本质。

所以该题结果为打印at 

第七题 

 这题相比其他题难度有所提升(可以说最难),需要画图才能分析清楚。

有了这图,就容易推出来结果。

我就不推了给了图你们自己推一下,有了图简单多了。结果如下。

 。

总结 

指针5基本上都是题目,在做题目时我们还总结了一些知识点,比如知道了多个占位符的作用,%s,%p,%x,%d到底本质是怎么作用的。还又了解了一些隐式转换。

除此之外还通过这些题目进一步提高了我们的思维能力。

所以指针(5)就到这里了。指针这一大篇就通过五大节结束了。 

我们之后学习字符函数和字符串函数。

  • 33
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
C语言课程设计的优点主要体现在以下几个方面: 基础性强:C语言是一门基础性的编程语言,它直接涉及到计算机的内存管理、指针操作等底层知识。学习C语言有助于深入理解计算机的工作原理,为后续学习其他高级语言打下坚实基础。 可移植性好:C语言编写的程序可以在多种操作系统和硬件平台上运行,因此,学习C语言可以帮助学生掌握跨平台编程的技能,提高程序的可移植性。 效率高:C语言具有高效性,它可以直接访问硬件资源,执行效率高。在编写系统级软件、嵌入式系统、游戏开发等领域,C语言具有明显优势。 结构清晰:C语言采用结构化编程思想,有助于培养学生的逻辑思维能力和程序设计能力。通过C语言的学习,学生可以掌握如何合理组织代码、设计算法和数据结构。 资源丰富:C语言拥有丰富的学习资源和社区支持,包括教材、在线课程、论坛等。学生可以通过这些资源自主学习,解决遇到的问题,提高编程能力。 实践性强:C语言课程设计通常包大量的实践环节,如编写小程序、实现算法等。这些实践环节有助于提高学生的动手能力和解决问题的能力,使他们更好地将理论知识应用于实际项目中。 综上所述,C语言课程设计具有基础性强、可移植性好、效率高、结构清晰、资源丰富和实践性强等优点。通过C语言的学习,学生可以掌握编程的基本技能,为后续的专业学习和职业发展奠定坚实基础。
C语言课程设计的优点主要体现在以下几个方面: 基础性强:C语言是一门基础性的编程语言,它直接涉及到计算机的内存管理、指针操作等底层知识。学习C语言有助于深入理解计算机的工作原理,为后续学习其他高级语言打下坚实基础。 可移植性好:C语言编写的程序可以在多种操作系统和硬件平台上运行,因此,学习C语言可以帮助学生掌握跨平台编程的技能,提高程序的可移植性。 效率高:C语言具有高效性,它可以直接访问硬件资源,执行效率高。在编写系统级软件、嵌入式系统、游戏开发等领域,C语言具有明显优势。 结构清晰:C语言采用结构化编程思想,有助于培养学生的逻辑思维能力和程序设计能力。通过C语言的学习,学生可以掌握如何合理组织代码、设计算法和数据结构。 资源丰富:C语言拥有丰富的学习资源和社区支持,包括教材、在线课程、论坛等。学生可以通过这些资源自主学习,解决遇到的问题,提高编程能力。 实践性强:C语言课程设计通常包大量的实践环节,如编写小程序、实现算法等。这些实践环节有助于提高学生的动手能力和解决问题的能力,使他们更好地将理论知识应用于实际项目中。 综上所述,C语言课程设计具有基础性强、可移植性好、效率高、结构清晰、资源丰富和实践性强等优点。通过C语言的学习,学生可以掌握编程的基本技能,为后续的专业学习和职业发展奠定坚实基础。
### 回答1: 《C Primer 中文版(第5版)》是一本非常经典的C语言学习教材,其分为18章,内容从简单的语法讲解到高级语言特性,非常全面。书中通过大量实例介绍了C语言的各种基础概念,例如:变量、函数、数组、指针和结构体等,包了语言的所有核心要点,并且通过编程实践帮助读者快速掌握语法知识。此外,本书着重于C语言与C++语言的区别与联系,介绍了C语言与C++语言的相似点与不同之处,帮助读者更好地理解这两种语言。书中的练习题有助于巩固所学知识,提高编程思维。本书不仅适用于有编程基础的读者,还适合初学者学习。总之,《C Primer 中文版(第5版)》是一本高质量的教材,不论是学习编程还是提高技能都是必读的书籍之一。 ### 回答2: 《C Primer 中文版》第五版是一本C语言入门的经典教材。它通过清晰而详细的讲解和大量的实例案例,帮助读者真正理解C语言的基础知识和编程技巧。本书共分为18章,从C语言基础数据类型、算术运算符和控制语句开始讲起,一直解释到高级操作,如函数指针和位运算等。 此外,本书还介绍了C语言中常用的数据类型、函数、指针、字符串、结构体、共用体、位操作以及文件操作等知识点。不仅如此,每一章节结尾还提供了大量的练习题目,并配有答案和解析,有助于提高读者的理解和实战能力。 值得一提的是,本书特别适合初学者学习。在阐述概念的同时,作者以简单易懂的方式呈现实际应用场景,让读者理解问题的本质和解决方案,避免了知识的孤立性和抽象性,提高了学习效率。 总之,《C Primer 中文版》第五版是一本入门级的C语言教材,涵盖了C语言基础知识和编程技巧,可供初学者参考和学习。本书适合自学或作为课程的教材使用。建议学习者掌握C语言基础后,再深入学习与实践。 ### 回答3: 《C Primer中文版(第5版)》是一本C语言入门级别的教材,主要介绍了C语言的基本概念、语法规则、程序设计方法以及C语言的特点和应用领域等方面的内容。本书内容丰富、系统性强,适合初学者从零起步学习。 本书共分为18章,内容包括基本数据类型、数组、字符序列和字符串、指针、函数、结构体和联合体、动态内存分配、位运算、输入和输出、预处理器和C库等。同时,本书也介绍了一些实际应用案例,例如文件操作和排序算法等,可以帮助读者更好地理解和应用C语言。 除了书籍内容之外,本书还有一些非常实用的附录,例如C语言关键字和标识符、ASCII码表、格式说明符和转义字符等,可以帮助读者更加深入地了解C语言的具体使用方法。 总之,《C Primer中文版(第5版)》是一本很好的C语言入门教材,无论是初学者还是对C语言有一定了解的读者都可以从中获得很多帮助和收获。同时,本书语言简洁清晰,结构合理,对于初学者来说,是一本很好的自学教材。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值