(3)c 学习笔记—表达式,语句和函数

表达式

  1. 解引用操作符优先级低于递增操作符。
*p++;  // 等价于*(p++)
  1. 异或运算符是有且只有一个为1才为1,否则为0;
  2. 位运算符如何处理符号位并没有明确的说明,所以最好是用在无符号类型。
  3. 移位运算符优先级低于算术运算符,但是高于比较运算符,赋值运算符和条件运算符。
  4. 强制类型转换:static_cast,const_cast,reintercept_cast;

函数

  1. 空语句:;用于语法需要而逻辑不需要的地方,使用的地方最好加注释说明是空语句。
  2. 自动对象: 只存在于执行期间的对象,比如形参。
  3. 使用引用避免拷贝,如果无需改变引用形参的值,最好定义为const。
  4. 使用引用形参传递返回额外信息,跟Java中传递一个地址进去,改变了这个地址指向的值。
  5. 不定长参数:
initializer_list<string> arg; //多个strin

6 . 省略符;

void foo(int a  , ...);
void foo(int a...)
void foo(...)

7 . 函数return后,它所占用的内存会被清除,所以不要返回局部对象的引用。
8 . main函数可以没有return语句,编译器会默认加一句return 0;
9 . 当函数返回值比较复杂,比如是数组指针时,有3种方式简写:

//第一种,类型别名
typedef int arrT[10];
using arrT = int[10];
//第二种:尾置返回类型
auto func(int i) -> int (*)[10];
//第三种:使用decltype代替类型
int arrT[10];
decltype(arrT) *func(int i);

10 . main函数不能重载。
11 . 函数可以多次声明,但是如果有默认参数,那么有默认参数的声明只能有一次;当调用的时候,如果想使用默认参数,只能省略后面的。
12 . 内联函数适用于规模小,操作频繁的函数。
13 . 调用重载函数时尽量避免强制类型转换,如:

void f(int a);
void f(int b , int c = 1);
f(2);    //上面两个函数都是匹配的

14 . 函数指针:函数指针指向函数而非对象,函数指针可以直接调用该函数,解引用斗不需要。

你可能感兴趣的:(其他)