1.scanf
scanf传入的是地址,printf传入的是数值
对于数组,变量名就是地址。c是c[0]的地址,&c是整个c[0]的首地址,二者虽然值相同但是所占内存空间不一样。
链接:https://www.nowcoder.com/questionTerminal/a29e4033053f43b4bd8d8b15c868c115
来源:牛客网
c &c &c[0]的值都一样,都是数组第一个元素的地址。
区别在于类型不同,用typeid.name()可以求出它们的类型,c的类型是char[10],&c的类型是char(※)[10],&c[0]的类型是char※(此处不用*是因为俩星号在这个编辑下就会被认为是斜梯……)
2.数组初始化
定义二维数组,一定要确定列数,因为编译器根据列数来进行寻址,
花括号里的花括号是分行给数组赋初始值,因为分行赋值可以缺省,缺省值由零填充,未确定列数,就无法完成初始化。
3.内存对齐
// 对齐原则:每一成员需对齐为后一成员类型的倍数
// 补齐原则:最终大小补齐为成员类型最大值的倍数
structA
{
inta; // 4
shortb; // (4) + 2 = 6 下一元素为 int,需对齐为 4 的倍数, 6 + (2) = 8
intc; // (8) + 4 = (12)
chard; // (12) + 1 = 13, 需补齐为 4 的倍数,13 + (3) = 16
};
structB
{
inta; // 4
shortb; // (4) + 2 = 6,下一成员为 char 类型,不考虑对齐
charc; // (6) + 1 = 7,下一成员为 int 类型,需对其为 4 的倍数,7 + (1) = 8
intd; // (8) + 4 = 12,已是 4 的倍数
}
4.有向图回路
判断图有无环的方法包括:
1.DFS,深度优先遍历
2.拓扑排序
3.求最短路径(有环则最短路径为0)
5.求2013
A是对的。
逆向推导: 由2013-1=2012,2012/2=1006(由于只允许+1和乘2的操作,逆向即为-1和除以2)
1006/2=503 ,503-1=502 ……一直下去,遇到偶数除以2,遇到奇数-1
最后得到结果操作序列为:1*2=2,2+1=3 (以下只用结果数表示)
2,3,6,7,14,15,30,31,62,124,125,250,251,502,503,1006,2012,2013
6. 2^100 mod 7
2^100 = (23)33 * 2 = 8^33 * 2 因为乘积的模等于模的乘积
8 % 7 = 1 所以
(8^33 * 2) % 7 = (8 % 7 ) ^33 * ( 2 % 7) = 2
7. 二叉树顺序
首先AB选项都是符合题意的,但不一定就是A或B,先序序列和后序序列正好相反**,则说明他一定是单支树**,已知一共有n个节点,且所以C选项说其高度为n,则C描述的就是单支树,故选C。
8.排序
9.排序
物理层:
中继器,集线器,双绞线
数据链路层:
网桥,以太网交换机,网卡(一半物理层,一半数据链路层)
网络层:
路由器,三层交换机
传输层:
四层交换机(常用作负载均衡),网关:对高层协议(包括传输层及更高层次)进行转换的网间连接器
10.冯诺依曼
冯.诺依曼理论体系下的计算机五大逻辑部件分别是: 控制器、运算器、存储器、输入/输出设备。