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

本文详细解析了C++中的表达式优先级规则,包括解引用与递增操作符的关系、位运算符的使用建议及移位运算符的优先级,并介绍了不同类型强制转换的方法。此外,还探讨了函数的各种特性,例如空语句的应用、自动对象的概念、引用参数的使用技巧、不定长参数的定义方式、函数返回局部对象引用的问题、main函数的特点、简写的数组指针返回类型、函数重载与默认参数的注意事项、以及内联函数的适用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

表达式
  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 . 函数指针:函数指针指向函数而非对象,函数指针可以直接调用该函数,解引用斗不需要。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值