C/C++零碎小知识

  1. 有关于main函数,用户可以调用main函数。
#include <iostream>using namespace std;
​
int main(int argv, *argc[]){
    cout << "1" << endl;
    main();
}

对于以上的例子,实际上我们能够直接调用main函数,输出的结果其实为一直递归调用输出1直到栈溢出。

  1. 对于一个数组的数组名和同类型的指针的问题,我们可以将数组名看成一个指针,但是数组名不能被用于直接赋值为一个字符串字面值。这样会有错误。

  2. 关于C的标准化输入和输出问题:
    对于scanf来说,%f和%lf分别表示的是单精度和双精度的浮点数。
    但是在printf中,%f则是单双精度都有的浮点数。
    还有以下的一些标准化控制输出符:
    - :表示左对齐
    %.xf :表示保留x位精度的小数
    f:表示的是单双高精度的浮点数
    e:科学记数法

  3. 关于类的大小(sizeof类名)
    有关于类的继承的相关的大小参见:
    http://www.cnblogs.com/BeyondTechnology/archive/2010/09/21/1832369.html
    1) 类的大小就是类的非静态成员数据的类型大小之和,这样也就是说静态成员数据不会做考虑。
    2) 普通的成员函数与sizeof无关。
    3) 含有虚函数的类都会创建一张虚函数表,表中存放的是虚函数的函数指针(4个字节)。这个表的地址存放在类中。
    4) 类的总大小也遵循类似struct字节对齐的调整规则。

另:struct的占用长度的计算方法介绍:
主要有两个原则
1)各成员变量存放的起始地址相对于结构的起始地址的偏移量必须为该变量的类型所占用的字节数的倍数;
2) 为了确保结构的大小位结构的字节边界数(即该结构体中占用最大空间的类型所占用的字节数)的倍数。

发布了24 篇原创文章 · 获赞 32 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/qq_36752072/article/details/79860323