C语言趣味题目

C语言趣味题目> 5++b的步长实际上是3个int,也就是++b运算以后,b指向{4,5,6}这个数组的开始,而b

大家好,欢迎来到IT知识分享网。

哈哈游戏来了

点网址进去可以先做做题,温习一下

http://stevenkobes.com/ctest.html

如果都做对了,下面就没必要读了意义不大

1可查看

https://en.wikipedia.org/wiki/Setjmp.h

C语言趣味题目

C语言趣味题目

C语言趣味题目

3没复杂东西

C语言趣味题目

5++b的步长实际上是3个int,也就是++b运算以后,b指向{4,5,6}这个数组的开始,而b[1]就是{7,8,9}, b[1][1]实际上就是8这个值也就是main函数中的a[2][1].

6两个C语言知识点,一个是等号操作符优先级高于逗号操作符,另一个是逗号操作符相当于运算逗号前半部后半部的表达式,然后返回后半部表达式的值。所以c等于a(先计算等号),而d等于b(逗号表达式返回b)。

7依然是2维数组相关题目,ptr为指向int [3]数组的指针,首先指向a[0],所以(*ptr)[1], (*ptr)[2]就是a[0][1], a[0][2].然后++ptr,相当于ptr指向了a[1],这时得到的是a[1][1],a[1][2],所以结果就是2,3, 5, 6。

8这里考的是返回一个指针的问题,一般来说返回指针的函数,里面一定有malloc之类的内存申请操作,传入指针类型,则是对指针指向的内容做修改。如果想修改指针本身,那就要传入指针的指针。

C语言趣味题目

10函数指针的数组p勉强算是一个知识点,另外一个知识点就是第八题提到的,对于int q这样的参数,是不会修改其内容的。而*p则可修改p指向的内容。

11这道题自己debug一下就完全明白了,主要知识点就是递归调用,另外前置后置自减操作的返回值问题

12对复杂的指针定义做解析,实际上K&R里面(5.12)也有介绍该如何解读。不熟悉的朋友可以试着练习练习标准库中的bsearch,qsort以及signal函数。

13这道题我在http://sunxiunan.com/?p=1637 也提到过相关知识点,也就是p实际指向*(buf + 1 + 5),写的更诡异一些就是p=5[buf +1];也是同样结果。

14类似上题(p += sizeof(int))[-1];相当于*(p + sizeof(int) + (-1))。

15这道题也是两个知识点,一个是可变参数函数定义以及如何实现,va_arg会把5,7依次取出来。另一个知识点是i &= i-1,实际上是计算了i二进制形式中1的个数,每次计算都会消减掉最低有效位上的1。比如7二进制表示为111。i &= i –1的计算结果依次为110,100, 000 (也就是0)。在hacker’s Delights这本书里介绍了很多类似技巧。

16只要了解静态局部变量的真正内涵,这道题就是小菜

学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入学习交流群

,我们一起学Python

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/58630.html

(0)
上一篇 2024-06-25 18:00
下一篇 2024-07-10 09:45

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信