关于c语言的期末考试

这两天快要期末考试了, 随便拿来一份题做, 发现里面好多题都好怪啊。。。  特别是指针、数组、自增减运算这方面的, 也就发现了一些自己的知识漏洞。

一:

假设有定义 int *p; 那么p[0], &p, &p[0], (&p)[0], *p 分别代表什么?

p[0]就是*p 就是p所指向的内存中的值

&p是p这个指针本身的地址,&p的类型是int**

&p[0]就是p[0]的地址,也就是p

(&p)[0],就是*(&p),也是p

*p,就是前面说的p[0]



二:
数组名是常量不能改变(无法进行自增减运算)

关于switch
先执行case,当所有的case都判断完不符合条件的时候,才会执行default,无论你的default放在哪,第一行,最后,或者中间位置。
default是缺省默认的意思,default在switch语句中不管放在哪都是从第一个case开始执行,当所有的case都不满足条件时,才执行default。
需要注意的是,default在最后一行时下面的break可以省略不写,但如果没有在最后一行default下面需要加上break,否则执行完default后会继续执行下面的代码直到遇到break跳出循环。
原文地址:https://www.cnblogs.com/ZZZZone/p/6232890.html