看的是风景,传的是心情
sizeof
1.后面类型要不要加双括号?
对于int,char,这种类别(数据类型)是必需要的,例如sizeof (int),这个必须加;
而对于变量名
char a[500];
sizeof a;
这个就可加可不加了
2.strlen
for (int i=0; i<strlen(a); i++)
这样写是会出错的(貌似竟然奇葩地说我超出时间限制,难道是变成野指针了?),改为
int len = strlen(a);//谢谢好心的前辈指正,因为strlen(n)的复杂度是o(n)的,所以字符串如果长的话复杂度就o(n^2)了
我仔细回看了那道题目,果然字符长是10^5级别的,平方一下果然超了 http://code.bupt.edu.cn/problem/p/390/
for (int i=0; i<len; i++)
3.memset(a, 0, 500);
这样也会错,下次我把例题找出来
应改为sizeof a;memset还要注意的一点是,它主要是针对字符,不是针对整型数组的,所以
int a[500];
memset(a, 0, sizeof a);是正确的
memset(a, 1, sizeof a);是无效的
但是有个特例
memset(a, -1, sizeof a);也是正确的
除了-1和0,其他的整型数组赋值都不行
4.sort qsort
sort return a<b;是升序
qsort return a>b;是升序
5.lld才是long long (int)
long 和 int 是一样的
int * int会超过int的范围,注意强制类型转换,(如果不想都用long long的数据结构,怕超内存的话)