18 19 20纳新题知识点

数组的相关知识

  • array[m][n]=(*array)+i *n+j
    如果m,n为负数情况下,同样适用
  • array[i]=i[array]
  • num+i与num[i]是一致的
  • 数组在传送给函数时作为指针传递,所以此时的大小是指针的大小

sizeof的知识点

  • sizeof( )不会执行括号中的表达式

static的知识点

  • static在第一次定义的时候会进行赋值,第二次是则不会,保留之前的值

const的知识点

  • const 修饰的不改变
char *const p1

const直接修饰p1,指针地址不能变

const char *p2
char const *p2

两者意思一致,const修饰的是*p2,指向的值不能改动

&a与a的区别

  • &a代表的是数组的指针,&a+1代表整个数组加1
  • a代表的是数组首元素的地址,a+1代表a[1]

define的定义

  • 在进行define替换时,需注意添加括号,否则可能发生错误
  • 在define替换时,进行的是直接替换
#define MULTIPLY(x,y) x*y
int x=MULTIPLY(1+2,3);
//此时x的值为7,因为1+2*3
  • 当宏参数是另一个宏的时候,需要注意的是凡宏定义里有用’#’或’##’的地方宏参数是不会再展开.
    即, 只有当前宏生效, 参数里的宏不会生效
    加一层转换宏就可以生效
#define YEAR 2018
#define LEVELONE"XiyouLinux"#x"\n"
#define LEVELTWO(x) LEVELONE(x)
printf(LEVELONE(x));
printf(LEVELTWO(x));
//xiyoulinuxYEAR
 xiyoulinux2018

结构体字节对齐

  • 计算时按最大成员的大小进行逐个判断,有需要就补位

类的sizeof计算原则

   1.类的大小为类的非静态成员数据的类型大小之和,也就是说静
   态成员数据不作考虑。
   2.普通成员函数和构造函数与sizeof无关。
   3.虚函数由于要维护在虚函数表,所以要占据一个指针大小,也
   就是4字节。
   4.类的总大小也遵守字节对齐规则。

main函数

  • argc指代参数的个数,argv指代每个参数
  • 如果 main 函数的最后没有写 return 语句的话,则加入return 0,表示程序正常退出。
  • return的返回值会进行类型转换,比如:若return 1.2 ;会将其强制转换为1,即真正的返回值是1
    详细见main函数的返回值

printf的返回值

  • printf的返回值从右到左进行读取

运算符(左移右移)

  • 左移:高位(左边)丢弃,低位(右边)补0
    左移n位,将它的值乘以2的n次方
  • 右移:符号位不变,低位舍弃,高位补上符号位
    右移n位,将它的值除以2的n次方

大小端

  • 小端:将低序字节存储在起始地址
    大端:将高序字节存储在起始地址

越界处理

  • 当输入的值大于char的一边极限值时,会从另一边开始以剩余的差值计算。
    详细见char越界处理

/ddd转义字符

  • \ddd 最多只支持三位数字
    使用 ‘\ddd’ 方法赋值实际上是将八进制数字通过转义字符 ‘’ 赋值为ascii表中对应的字符。
    详细见转义字符
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值