1、基本概念
---- 静态分配和动态分配
静态分配是指在编译阶段就能确定大小,由编译器进行分配;
动态分配是在程序的执行过程中进行分配的,即运行时分配,比如堆的申请;
堆在动态分配时,申请连续的内存空间;所以频繁的调用new、delete容易产生内存碎片。
---- 可以动态分配栈空间吗?
答案是可以。
我们常常使用的malloc(),calloc(),realloc()等函数是用来动态分配堆空间的;
而使用alloca()函数可以动态分配栈的内存空间,释放的时候由编译器自己释放。
---- 数据封装
数据封装就是将一组数据和与这组数据有关的操作组装在一起形成一个组合,这集合就是类。
2、常用的转义字符
显示输出结果 | 转义字符 |
Tab | \t |
" | \" |
\ | \\ |
? | \? |
\n | \\n |
响铃 | \a |
回车 | \r |
换行 | \n |
% | %% |
' | \' |
八进制 | \ddd(三位) %o |
十六进制 | \xhh(二位) %x |
来举个例子说明一下吧:
1. 输出一个字符的十进制,八进制和十六进制,以转义字符的形式输出字符‘C’
int main(void)
{
char ch = 'C';
printf("十进制:%d,八进制:0%o,十六进制:0x%x\n",ch,ch,ch);
printf("\103,\x43\n");
system("pause");
return 0;
}
输出如下:
2. 输出 cdf 345?
"book" 786\n
int main(void)
{
printf("cdf\t345\?\n");
printf("\"book\"\t786\\n\n");
system("pause");
return 0;
}
输出结果: