-
数组初始化
- 局部数组简写的初始化语法。如果一个数组被部分初始化,没有被初始化的元素会被自动设置为相应类型的0。这是编译器自动完成的。可以这样写:只能0!
int main(void)
{
int arr[1024] = {0}; // This will make all ZERO
int arr2[1024][1024] = {0};
// statements
}
- fill()和 menset() 两者看似相等,但两者却有巨大的区别,在fill()中 ,它的原理是把那一块单元赋成指定的值,也就是说任何值都可以,而在memset(),则是将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值,memset只能赋值0 和 -1!
- 二维数组初始化赋值时候N取数组容量(MAXN)!小了会赋值失败
#include <algorithm>
using namespace std;
fill(a,a+100,1);
fill(f[0], f[0]+N*N, k); // 哇,坑死了,赋值时候N取数组容量(MAXN)!小了会赋值失败
#include <cstring>
memset(a,0,sizeof(a));
-
指针写法
C++ 推荐 int* p,但要注意:
int* p,q; //这种写法是错误的!!!!
//这种写法是错误的!!!!
int *p,*q; //正确写法
- 结构体分号前相当于定义结构体变量,定义指针,结构体变量,结构体数组皆可。
- 可以设最大值为0x6fffffff
-
输入输出重定向
#define LOCAL
int main{
#ifdef LOCAL
freopen("data.in", "r", stdin);
freopen("data.out", "w", stdout);
#endif
//关闭
freopen("CON", "r", stdin);
freopen("CON", "w", stdout);
}
-
格式控制符
1. %md m位右对齐输出,不足用空格补齐
2.%0md m位右对齐输出,不足用0补齐
3.%.mf 保留m位小数输出
/* 完整格式
1.% - x m . n 格式字符
2.有-表示左对齐,无表示右对齐
3.x表示空位需要填的字符
4.m表示最小域宽
5.n表示精度,一般用于实型小数点保留位数,按照四舍五入原则
*/
使用时不用加空格,比如“%-010.5f”。10位,左对齐,以0填充,保留5位小数。
输入5.6,输出5.60000 。