C/C++(1)

2020-06-21  本文已影响0人  BlueFishMan

#include预处理

using

//using编译指令
using namespace std;

//using声明
using std::cin;
using std::cout;
using std::endl;

std::cin;
std::cout;
std::endl;

sizeof运算符

返回类型和静态分配的对象、结构或数组所占的空间

int a[5] = {0};//初始化0
int b[] = {1,5,3,8};
int n = sizeof b / sizeof(int);//4

char c[] = "abc";
char *str = c;
const char *str = "abc";
sizeof str;//8

//函数的返回类型所占的空间大小,且函数的返回类型不能是void
double func(){
    return 0;
}
sizeof func();//8

结构体/共用体/枚举

struct Student {
    int name;//默认public
};
struct Student me;

typedef struct Student {
    int name;
} S;
struct Student {
    int name;
};
typedef struct Student S;
S me;

void Student() {};//不冲突
void S() {};//冲突
struct Student {
    int name;
};
Student me;

typedef struct Student {
    int name;
} S;
struct Student {
    int name;
};
typedef struct Student S;
S me;

void Student() {};//冲突
Student();
struct Student me;
void S() {}//冲突

内存对齐

struct s {
    int a[5];
    char b;
    double c;
};

union u {
    int a[5];
    char b;
    double c;
};

sizeof(s);//32
sizeof(u);//24

分配内存

典型内存空间布局
5种变量存储方式

自动存储

栈(stack,堆栈)

静态存储

数据段

动态存储

堆(heap)

调试


Valgrind 内存分析工具

内联函数

inline


条件编译

#define _DEBUG_
#ifdef _DEBUG_
#else
#endif

引用


常引用

int a = 0;
const int &b = a;
a = 1;//yes
b = 1;//no

string funcl();
void func2(string &s);
void func3(const string &s);

func2("hello");//no
func2(funcl);//no
func3("hello");//yes
func3(funcl);//yes
//func1()和”hello”都将产生一个临时对象,而在C++中,这些临时对象都是const类型的.因此,上面的表达式就是试图将一个const类型的对象转化为非const类型,这是非法的
上一篇下一篇

猜你喜欢

热点阅读