1. 模2 除2 ,10转2
.
2.数组初始化
char[] str="abc"; # a b c /0 四个元素
char[] str={"a","b","c"} 是3个元素
3.指针类型
首先指针 如果是32位 编译机 ,那指针就是 32bit 4个字节,64位 就是8字节
指针为什么有类型: 在 *pointer 时,char* 类型是解1个字节 int*解四个字节
4.避免野指针
a.野指针 里是个随机变量,如果给野指针赋值,不知道 会改写那块地址的内容。 非常危险
b.指针越界也会存在野指针
c.指正地址被释放的也会是野指针
当test()返回地址给到*p的时候, 这中间很有可能操作系统在释放test()瞬间会把地址分配给其他变量,所以 *p之后就是野指针了
数组越界另外
//*p = i;
//P++
和 *p++=i 是一个意思
5.arr 作为参数传时的含义与 arr[0]的区别
6.多级指针
7.typedef 给结构or变量 重新定义个名字,typedef 之后 可以直接用stu
8.整数在内存如何存
2进制数的补码, 反码 补码规则,正数一样 ,负数 除符号位取反 +1 (网上查)
补充个算法: 10进制转16 10进制转2进制 ,2进制转16
#余 模 余 模 想象下 10进制 分别打印每一位 %10 就最后一位 /10去掉最后一位
#转16
def fac(var):
if (var<16):
print var
else:
i=var%16
fac(var/16)
print i
#转2
def fac2(var):
if (var<2):
print var
else:
i=var%2
fac2(var/2)
print i
#2进制转16
每4个2进制 0~15 代表了一个16进制0~ F
大端小端存储模式 指的最小单元 是字节。 也就是 8bit 为最小单位,一个int是 4个字节
4.设计一个大小端程序判断
如下代码 (char*)&a 相当于取了 a 的4字节里的 第一个字节 ,判断是不是01 (小端倒存 第一个字节 就是01)
为什么换成char类型? char类型 只访问 int 4个字节里的 第一个字节, 也就是44 (被换成00)
5.程序的输出 要查查 补码是怎么补的 ,整形提升的规则是什么
结果是-1 -1 255 (上面说错了 补码是+1 要查查)